프로세스와 스레드프로세스프로세스는 독립된 실행 환경을 가지고 있고 일반적으로 비공개 기본 런타임 리소스 집합을 가지고 있으며, 특히 각 프로세스에는 자체 메모리 공간이 있다.프로세스는 종종 프로그램 또는 애플리케이션과 동의어로 간주된다. 그러나 사용자가 하나의 애플리케이션으로 보는 것은 실제로는 협력하는 프로세스의 집합일 수 있다. 대부분의 Java 가상 머신 구현은 단일 프로세스로 실행된다. 스레드스레드는 경량 프로세스라고도 한다. 프로세스와 스레드 모두 실행 환경을 제공하지만 새 스레드를 만드는 것이 새 프로세스를 만드는 것보다 더 적은 리소스를 필요로 한다. 스레드는 프로세스 내에 존재하며 모든 프로세스에는 적어도 하나가 있다. 스레드는 메모리와 오픈된 파일 등 프로세스의 리소스를 공유한다. 이는..
전체 글
공식 문서에 @EnableWebMvc를 붙이지 말라고 나와 있다.이미 Spring MVC 자동설정이 @EnableWebMvc가 설정하는 것을 수행하고 있기에 둘을 같이 사용하지 않아도 된다고 한다. @EnableWebMVC를 사용하는 경우자동설정을 사용하지 않고 Spring MVC에 대한 완전한 제어를 원할 때 @Configuration과 함께 @EnableWebMVC를 사용하면 된다고 한다.동일한 방법으로 @Configuration과 DelegatingWebMvcConfiguration을 사용하는 방법이 있다고 한다. WebMvcAutoConfiguration에서 @EnableWebMvc와 동일한 역할을 하는 Configuration이 존재한다.@Retention(RetentionPolicy.RUNTI..
Filter는 Spring이 아닌 J2EE 표준 스펙으로 Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다고 합니다. @Componentclass LoggingFilter(private val mapper: ObjectMapper) : Filter { override fun doFilter( request: ServletRequest?, response: ServletResponse?, chain: FilterChain?, ) { ... }}하지만 저는 Filter 클래스를 주로 위와 같이 빈으로 등록하여 사용하고 있었기에 Spring에서 Filter를 관리하..
동시성 문제 - 중복 저장@Componentclass SubscribeWorkbookUseCase( private val subscriptionDao: SubscriptionDao, private val applicationEventPublisher: ApplicationEventPublisher,) { @Transactional fun execute(useCaseIn: SubscribeWorkbookUseCaseIn) { /** 워크북 구독 히스토리를 조회한다. */ val workbookSubscriptionHistory = subscriptionDao.selectTopWorkbookSubscriptionStatus() when { ..
이번 글에서는 SpringBoot에서 DispatcherServlet을 활용하여 HTTP 요청을 처리하는 과정을 살펴보려 합니다.* 해당 과정은 spring boot 2.7.5를 기준으로 작성하였습니다. 그전에 간단히 DispatcherServlet이 HTTP 요청을 처리하는 과정을 살펴보면 위의 사진과 같습니다.DispatcherServlet에서 요청을 받습니다.HandlerMapping에서 적합한 Handler를 찾습니다.적합한 Handler를 반환합니다.HandlerAdapter에게 Handler를 전달하고 실행합니다.Handler를 실행합니다.Handler 실행 결과를 반환합니다.HandlerAdapter의 실행 결과를 반환합니다.요청 처리 결과를 반환합니다.그럼 요청을 처리하는 Dispatche..
프로젝트 MVP 개발 이후 개발한 코드의 병목지점과 장애 발생 구간을 모니터링하기 위해 Pinpoint를 도입하였습니다. 이번 글에서는 Pinpoint를 도입하며 발생하였던 이모저모를 소개하겠습니다. 환경API 서버 (AWS)ECS/EC2를 활용한 도커 기반t2.microPinpoint 서버 (GCP)n2-highmem-2* GCP의 경우 처음 가입하면 제공하는 3개월에 300달러의 자원을 사용할 수 있는 크레딧을 사용하였습니다. Pinpoint Agent설치wget https://repo1.maven.org/maven2/com/navercorp/pinpoint/pinpoint-agent/3.0.0/pinpoint-agent-3.0.0.tar.gztar -zxvf pinpoint-agent-3.0.0.t..