Java volatile이란?
·
프로그래밍/Java
자바 volatile 키워드에 대해 알아보기 전에 앞서, 관련된 내용인 컴퓨터 구조와 관련된 내용에 대해 간단하게 설명하려 합니다. Memory-wall Problem Memory-wall 문제는 컴퓨터 구조에서 CPU(프로세서)의 속도가 메모리 시스템과 데이터를 주고받는 속도를 능가할 때 발생하는 현상을 말합니다. 그로인해 프로세서는 빠른 연산 처리속도를 가짐에도 불구하고 메모리에서 CPU로 데이터를 가져올 때까지 기다려야 하므로 성능이 느려지고 속도도 제한되게 됩니다. 따라서 위 그림과 같이 CPU(그림에서의 Core 영역)는 CPU cache를 둠으로써, CPU와 메모리 사이의 데이터 전송 속도 문제를 해결했습니다. 하지만 이로 인해, CPU cache의 데이터와 RAM사이의 데이터가 일치하지 않는..
Spring WebMVC VS WebFlux
·
프로그래밍/Spring
webMVC 스프링의 WebMVc는 동시 접속 사용자 처리를 위해 블로킹 IO 모델을 활용합니다. 이는 처리 가능한 동시 접속자의 수만큼 스레드를 생성해 각각의 스레드가 요청이 완료될 때까지 점유 되어있는 상태로 존재하며 클라이언트에게 요청에 대한 응답을 돌려줄 때 해당 스레드가 다시 가용한 상태로 전환되는 방식입니다(Tomcat의 Thread Pool) webFlux 스프링 WebFlux는 비동기, 논블로킹 형태로 구성되어 있습니다. 클라우드 환경을 기반으로 한 IT 서비스 인프라 환경이 늘어나기 시작하면서 웹 서비스아키텍처 구축 시 더 적은 자원으로 더 빠르게 서비스를 제공하려는 수요가 늘어나기 시작했고, Node.js에서는 이벤트 루프를 활용한 Non-Blocking IO를 선보이면서 웹 서비스 아..