스프링부트_01
Containerless - 웹 애플리케이션 아키텍쳐
- Serverless와 유사한 개념
- 컨테이너가 없는게 아니라, 서버리스처럼 신경을 안써도 된다.
- 웹 컴포넌트는 항상 웹 클라이언트가 필요한데, 클라이언트에서 요청을 주면 그 때 웹 컴포넌트가 동적인 콘텐츠를 만들어서 클라이언트에게 응답으로 보내줌
- 항상 웹컴포넌트는 웹 컨테이너안에 있어야한다.
- 웹컨테이너는 웹컴포넌트를 관리하는 역할. (메모리에 올리고 인스턴스해주고 라이프 사이클 관리를 해주는 역할) -> 그리고 다수의 컴포넌트를 관리함
- 클라이언트로 요청이 들어오면 어느 컴포넌트로 처리해줄지 결정하는 역할도 함 . -> 이게 라우팅 혹은 맵핑이라고 한다.
- 자바에서는 컴포넌트를 서블렛이라고 불리고 유명한 컨테이너는 톰캣 !!
이게 너무 불편해서 발전된 기술이 스프링 !!
- 스프링은 컨테이너가 백그라운드에 존재하고 컴포넌트들은 빈이라고 부름
- 근데 이게 대체가 안됨. 자바 웹 표준을 사용하려면 서블릿을 사용해야함
- web.xml 에 설정을 하고 .war 파일로 빌드가 되어야함 (폴더구성도해야함)
- 배포, 설치, 포트, 클래스로더 등등 개발하기전에 할 게 너무 많다.
- 컨테이너리스가 적용되면 서블릿컨테이너가 동작하지만, 설정하는것에 있어 우리가 크게 신경을 안써도되게끔 해줌.
독립 실행형 어플리케이션
- 서블릿컨테이너를 최초로 한번띄우는 작업마저도 제거하고, 어떤 클래스의 메인 메소드를 호출하면 그 전체가 동작하는 방식으로 개발하는 것.
Opinionated - 부트의 소개
스프링 프레임워크 설계 철학
- 일단 정해주는 대로 빠르게 개발하고 고민은 나중에하기
- 스프링을 잘 활용하는 뛰어난 방법 제공
검증된 프로젝트, 표준 자바 기술, 오픈소스 기술의 종류와 의존관계, 사용버전을 스프링에서 정해줌 (우린 부트팀을 믿으면 된다, 의심하지마라)
각 기술에 스프링에 적용하는 방식과 디폴트 설정값 제공
스프링부트의 유연한 확장
- 디폴트 구성을 커스텀하는게 매우 자연스럽고 유연한 방법 제공
- 스프링 사용방식을 이해한다면 언제든지 부트를 제거하고 원하는 방식으로 재구성 가능
- 부트처럼 기술과 구성을 간편하게 제공하는 나만의 모듈 작성 가능
스프링부트 개발의 오해와 관계
- 애플리케이션 기능 코드만 잘 작성
- 스프링을 몰라도 개발 잘한다
- 부트가 직접적으로 보여주지않은것은 몰라도된다
- 기술적으로 필요한게 생기면 검색해서 해결
스프링부트를 이해하게 된다면??
- 부트가 스프링을 어떻게 활용하는지 배우고 응용가능
- 부트가 선택한 기술, 자동으로 만들어주는 구성, 디폴트 설정 확인
- 필요할때 부트의 기본 구성 수정, 확장 가능
- 나만의 부트 모듈 제작 가능
HTTP
- 웹 Request, Response 기본 구조를 이해하고 내용 확인해야함.
Request
- 첫줄에는 어떤 메소드를 이용하겠다는게 나옴 (HTTP메소드)
- 뒤에 URL에서 호스트 네임과 포트를 제외한 나머지가 나옴 마지막에 http 버전이 나옴
- 헤더의 정보에 따라서 처리하는 방식이 달라지거나 응답시 타입이 바뀌기도함. 헤더정보를 필요해따라 꺼내서 사용.
- Post, PUT 메시지 바디가 요청되는 메소드는 헤더의 마지막 부분에 바디가 붙어서 나옴
Response
- 첫줄에 제일 중요한 상태코드값이 나옴 (200, 400, 500 등)
- 서버에서 만들어지는 응답에도 헤더가 붙음 -> 메시지 바디가 어떤 컨텐츠 타입으로 작성되었는가? 꼭 들어가야함
크롬에서 F12를 누르고 네트워크탭에서 확인 가능함
This post is licensed under CC BY 4.0 by the author.