Micro Service에서 WebFlux의 장점
·
프로그래밍/Spring
마이크로 서비스에서 WebFlux의 장점을 알아보기에 앞서, 기존에 자주 사용되었던 아키텍처 방식인 모놀리딕 아키텍처 환경에 대해 간단하게 알아보고 그 문제점에 대해 얘기해 보겠습니다. Monolitic Architecture 소프트웨어의 모든 구성요소가 한 프로젝트(모듈)에 통합되어 있는 형태. 모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해집니다. 이러한 기존 모놀리딕 아키텍처 환경은 여러 문제점들이 있었습니다. 하나의 모듈이 변경되어도 전체 서버를 배포해야 했습니다. 작은 기능..
Spring WebMVC VS WebFlux
·
프로그래밍/Spring
webMVC 스프링의 WebMVc는 동시 접속 사용자 처리를 위해 블로킹 IO 모델을 활용합니다. 이는 처리 가능한 동시 접속자의 수만큼 스레드를 생성해 각각의 스레드가 요청이 완료될 때까지 점유 되어있는 상태로 존재하며 클라이언트에게 요청에 대한 응답을 돌려줄 때 해당 스레드가 다시 가용한 상태로 전환되는 방식입니다(Tomcat의 Thread Pool) webFlux 스프링 WebFlux는 비동기, 논블로킹 형태로 구성되어 있습니다. 클라우드 환경을 기반으로 한 IT 서비스 인프라 환경이 늘어나기 시작하면서 웹 서비스아키텍처 구축 시 더 적은 자원으로 더 빠르게 서비스를 제공하려는 수요가 늘어나기 시작했고, Node.js에서는 이벤트 루프를 활용한 Non-Blocking IO를 선보이면서 웹 서비스 아..
Java Thread Pool?
·
프로그래밍/Java
쓰레드 풀(Thread Pool) 스레드 풀은 스레드 생성 및 삭제가 빈번하게 일어남에 따라 발생하는 메모리 할당에 소모되는 비용문제를 해결하기 위해 만들어졌습니다. 그에 대한 자세한 내용은 아래에서 이어서 설명하겠습니다. Thread Pool이 만들어진 이유 Thread가 필요하면 new 키워드를 이용해 각 Thread 인스턴스를 생성하는 방식을 사용했었습니다. 한번, 두번 사용하고 반납해야 하는 그런 상황이라면 개별적으로 Thread 인스턴스를 생성해 사용해도 상관이 없습니다. 그러나 Java 언어를 이용해 만들어지는 서버 애플리케이션은 수많은 Thread를 필요로 하며 초 단위로 Thread를 생성하여 사용하고 반납해야 합니다. 위 그림 처럼 사용자의 각각의 요청마다, 메모리에 쓰레드를 생성하고 삭..
HTTP 1.0 VS 1.1 vs 2.0 vs 3.0
·
프로그래밍/HTTP
HTTP Version 1.0 HTTP의 초기 버전은 서버로 부터 정보를 얻는(GET)만 가능했습니다. 하지만 점점 인터넷이 발전하고 새로운 기능이 생겨나면서 정보를 얻는 것 만으로는 충분하지 않게 되었습니다.(HTTP version 0.9) HTTP 버젼 1.0에서는 새로운 유틸리티들이 추가되었습니다. Header : HTTP 헤더를 도입해 프로토콜 방식을 유연하고 확장가능하게 만든 메타데이터의 전송이 가능하게 되었습니다. Versioning : HTTP 요청시 사용된 버전을 명시적으로 알려주고 request line에 추가합니다. Status Code : HTTP 요청은 상태 코드를 가지게 되었습니다. 상태 코드를 통해 receiver가 요청 처리상태(성공 또는 실패)를 확인할 수 있습니다. Cont..
Checked Exception VS UnChecked Exception
·
프로그래밍/Java
Exception? 자바에서 예외는 우리가 예상한, 혹은 예상치 못한 일이 발생하는 것을 미리 예견하고 안전장치를 하는 것 을 말합니다. 예외가 발생되는 일반적인 예 null인 객체에 메소드를 호출한다든지(null인 list에 get() 을 호출) 5개의 공간을 가지는 배열을 만들었는데 6번째 값을 읽으려 한다던지 네트워크 연결이 되어 잇는 서버가 갑자기 작동을 멈춰서 연결이 끊겨버리는 경우 Error VS Exception 위 그림처럼 Error가 발생되면 프로세스(프로그램이 메모리에 올라간 상태)가 중단되며 Exception이 발생되면 쓰레드가 중단됩니다. CheckedException CheckedException은 잘 작성된 애플리케이션이 예외 발생전에 미리 예상하고 복구해야하는 예외 조건 입니다..
프로세스와 쓰레드의 차이?
·
프로그래밍
단일 프로세스 시스템? 한 번에 하나의 프로그램만 실행되는 시스템을 말한다 단일 프로세스 시스템을 사용하면 I/O 작업을 진행 중인 프로세스가 작업이 끝날 때까지, CPU가 다른 작업을 수행하지 못하고 놀게 있게 되는 단점이 있다. 멀티프로그래밍? 단일 프로세스 시스템의 위와 같은 단점 때문에 멀티프로그래밍이 등장하게 되었습니다. 멀티프로그래밍은 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키자 즉, I/O 작업이 발생하면 다른 프로세스가 CPU에서 실행되도록 하는 것입니다. 멀티 프로그래밍은 CPU의 사용률을 극대화시키는데 목적이 있습니다. 멀티프로그래밍의 단점? CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기해야 한다.. 위 문제를 해결하기 위해 프로세스는 아주 짧은 시간 퀀텀(Quan..
Eclipse(이클립스) 단축키 Mac용
·
프로그래밍/Java
자주 쓰는 이클립스 (Mac용) 단축키 Mac ℹ ⌘ cmd + 객체 클릭 변수나 클래스 등을 정의한 곳으로 이동 ⌘ cmd +⌥ Option + G 전체 workspace에서 문자열 찾기 ⌘ cmd +⇧ Shift + O 자동으로 Import
6장 연습문제 풀이
·
프로그래밍
6-5 연습문제 풀이 #include #include int sum(int i); int main() { int num; printf("합을 구할 값? : \n" ); scanf("%d",&num); printf("1부터 %d까지의 합: %d \n",num,sum(num)); return 0; } int sum(int i){ if(i