WEB/Spring

· WEB/Spring
개요 Cache라는 개념은 많은 곳에 이용됩니다. CPU에도 L1, L2, L3캐시가 있고, 이들의 역할은 메모리를 조회하지 않아도 되도록 하는 것입니다. 같은 정보를 요청했을 때, 주 메모리에서 검색한 뒤 다시 CPU로 로드하는 것은 자원의 낭비이기 때문입니다. 이는 웹 서비스에서도 적용되는 개념입니다. 프론트엔드에서는 브라우저 캐시, HTTP 캐시 등과 같이 백엔드와 통신해서 가져오는 자원을 저장해둡니다. 백엔드에 같은 요청을 보낼 때, 이러한 캐시를 이용해서 통신에 필요한 자원을 절약합니다. 최근 진행한 프로젝트에서 백엔드 포지션을 맡았습니다. 이 때, 사용자와 어울리는 피드를 추천해주는 비즈니스 로직을 작성했습니다. 단순히 피드의 속성들과 사용자의 속성들에 대한 가중치를 연산하는 것이기에, 사용자..
· WEB/Spring
개요 이전에 Virtual Thread, Spring에서 Virtual Thread의 사용에 대해 작성한 포스트가 있었습니다. (Java21 Virtual Thread : https://nangmandeveloper.tistory.com/6) (Springboot에서 Virtual Thread사용 : https://nangmandeveloper.tistory.com/11) 해당 글에서 가상 스레드를 사용하는 법, Spring에서 가상 스레드를 사용하는 방법을 소개했습니다. 특히, Springboot에서 가상 스레드를 사용하는 경우, blocked상태가 적은 경우 일반 thread가 효율적이며 blocked상태가 많이 발생하는 경우 가상 스레드의 처리량이 더 높다는 부분을 확인할 수 있었습니다. 그렇다면,..
· WEB/Spring
개요 Spring을 이용해 서버 개발을 할 때, DB를 이용하지 않는 순간은 거의 없을 것입니다. 그만큼 DB는 서버 개발에 있어서 필수적인 존재입니다. 하지만, Spring은 Java를 사용하고 MySQL과 같은 DBMS는 SQL을 이용합니다. 따라서 둘 간의 연결을 위한 인터페이스가 필요합니다. Java진영에서는 DBMS와의 연결을 간단하게 하기 위해 JDBC를 도입했습니다. JDBC를 이용하면, DBMS에게서 간단하게 Connection을 얻어와 쿼리와 데이터를 주고받을 수 있습니다. (JDBC에 대한 글 추가예정) DBMS측은 Java와 같은 언어에서 DBMS에 쉽게 접근하기 위해 Connector를 준비해두고 있습니다. https://www.mysql.com/products/connector/ ..
· WEB/Spring
개요Actuator는 SpringBoot가 제공하는 기본적인 서버 모니터링 도구입니다.CPU사용량, 메모리사용량과 같은 간단한 자원 사용량부터 시작하여, Heap사용량, Hikari Datasource정보 등 많은 정보들을 제공하기 때문에, 이들을 적절히 사용한다면 서버의 자원을 지속적으로 모니터링할 수 있습니다. 서버에 문제가 생기거나, 자원 사용량을 최적화해야 하거나, 작성한 논리구조가 실제로 어떻게 동작하는지 확인하거나...이외의 많은 경우에 대해 원인을 파악하고 판단을 내려야 할 때 모니터링이 필수적입니다.이번 글에서는, 중요한 모니터링 기능을 제공하는 SpringBoot Actuator에 대해 알아보도록 하겠습니다.Actuator 사용하기Actuator를 사용하는 방법은 간단합니다. org..
· WEB/Spring
개요 Virtual Thread는 일반 Thread보다 가볍기 때문에 Context Switching비용을 효과적으로 줄일 수 있습니다. 따라서, Context Switching이 많이 발생하는 환경에서 이를 사용한다면 처리량을 늘릴 수 있습니다. (참고 : Virtual Thread - https://nangmandeveloper.tistory.com/6) SpringBoot에서 Virtual Thread사용하기 JAVA21을 사용하는 SpringBoot에서 Virtual Thread를 간단히 사용할 수 있습니다. application.yml에서 해당 설정을 추가하면 됩니다. 이렇게 되면, Tomcat 내부적으로 사용하는 Thread를 Virtual Thread로 교체할 수 있습니다. 일반 작업을 수행..
· WEB/Spring
개요 Spring에서 사용자의 요청을 처리하기 위해서 HTTP Connection이 수립되어야 합니다. 이러한 사용자와의 Connection을 Process로 관리하는 것은 불가능합니다. 자원소모가 너무 클 뿐더러, 이미 Tomcat자체가 Process로 동작하기 때문입니다. 만약 사용자의 Connection을 Process로 관리한다면, Connection마다 Process생성, 제거 등을 해야 하고, Tomcat과의 Process간 통신 방식을 따로 수립해 사용해야 합니다. Tomcat에서는 이러한 Connection을 Thread로 처리합니다. HTTP Connection Tomcat 9.0미만 버전에서는 IO(Input Output) Connector를 사용했습니다. IO Connector에서는 ..
· WEB/Spring
개요 개발 공부를 시작할 때, 서버에서 사용하는 자원을 줄여야 한다는 사실은 누구나 알고 있습니다. 하지만, 이제 막 공부를 시작했다면 서버의 처리량이 얼마나 되는지, 내가 리팩토링을 했을 때 처리량이 얼마나 늘어나는지 확인할 수단이 마땅찮을 것입니다. 이 때 사용할 수 있는 소프트웨어가 바로 Jmeter, nGrinder입니다. 이번 글에서는 Jmeter를 이용해 HTTP Request를 임의로 서버로 전송함으로, 스트레스 테스트를 진행하는 방법을 알아보겠습니다. 다운로드 사용법은 매우 간단합니다. 공식 링크 - https://jmeter.apache.org/download_jmeter.cgi 위의 링크에 접속하여, apache-jmeter-5.6.2.zip파일을 다운로드 받습니다. 압축을 푼 뒤, b..
낭만주의 개발자
'WEB/Spring' 카테고리의 글 목록