이전 시간에 배운 것

1. JPA란?

  • JPA는 Java Persistence API이다.
  • JPA는 ORM 기술이다.
  • JPA는 반복적인 CRUD 작업을 생략하게 해준다.
  • JPA는 영속성 컨텍스트를 가지고 있다.
  • JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능)
  • JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)
  • 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음
  • JPA는 쉽지만 어렵다.

1. 스프링부트 동작 원리

(1) 내장 톰캣을 가진다.

톰캣을 따로 설치할 필요가 없다. 즉시 실행 가능.

Socket: 운영체제가 가지고 있는 것. A라는 대상이 있고, B라는 대상이 있는데 메시지를 교환하려고 함. 이때 소켓을 이용한다.
처음에 A가 소켓을 오픈한다. 5000번 포트를 열고 소켓을 오픈 했다. B가 A와 통신하고 싶다면, 5000번 포트와 A가 있는 IP주소를 넣어서 전송한다. 

C가 A와 통신을 하고 싶어하는데, B와 A간의 통신에 5000번 포트를 사용하고 있기 때문에, C가 5000번 포트로 연결할 수 없음.
따라서 5000번 포트는 연결용으로만 쓰고, 연결이 된 이후의 통신은 랜덤한 포트(편의상 5001)를 사용하는 시스템을 사용. 
그런데 만약에 5001번 포트를 통해서 B와 A가 통신할때, CPU는 모든 자원을 5001번 포트의 통신에다가 쓰게 되어 5000번 포트가 작동하지를 못함. 따라서 5001번에는 새로운 스레드를 만들어주어야한다.

5000번에는 메인 스레드, 새로운 사용자의 요청을 받는다.
5001번에는 스레드 1, B와 통신하는 스레드
이런 시스템을 통해 C는 5000번에 연결하고, 5002번에 스레드 2가 만들어지면서 5000번 연결이 끊기고, 5002번에 연결되면서 통신하게 된다.

소켓통신 , time slice, 동시 동작
-> 연결이 끊어지지 않기 때문에 부하가 크고, 연결이 많아질 경우 느려질수 있다.

http 통신은 stateless방식을 사용. A, B 가 C와 연결해서 데이터를 받으려고 한다.
근데 Http는 문서를 전달하는 통신인데, A가 C에게 a.txt 달라고 80번 소켓에 연결. 다이렉트로 돌려주고 통신선을 끊음
B도 마찬가지로 b.txt.파일을 응답해주고 끊어버린다.
-> 연결이 끊어져서 부하가 적지만, 다시 연결될때 새로운 사람으로 인식함.
http는 cern연구소에서 다양하게 퍼져있는 논문들을 하나의 서버로 모아놓고 필요할때만 html문서를 꺼내쓰는 것이 목적이었기 때문에 연결을 끊는 방식을 채택했다.

이러한 단점들을 보완한게 Web Server임.

다음 시간에 배울 내용

(2) 서블릿 컨테이너

...더 보기

이 블로그 포스팅은 인프런 최주호님의 스프링부트 개념정리(이론) 강의에 대한 정리 포스팅입니다. 
다음은 강사님의 강의 링크입니다. 무료 강의라서 가입만 하면 볼 수 있습니다. (강의 링크)

+ Recent posts