what is containerless

2023, Feb 09    

토비의 스프링 부트 강의가 인프런에 올라왔네요 !!

강의 내용 중 containerless 아키텍처에 대해 말씀하셔서 추가로 더 정리했습니다.

이렇게 보면 MSA는 선택이 아니라 필수인 것 같습니다.ㅎㅎ

what is containerless?

  • serverless와 유사한 개념으로 서버와 같은 인프라에 관여하지 않고 개발자들이 서비스에 집중할 수 있도록 하는 것

containerless가 나타난 배경

  • what is container?
    • web client가 web request를 주고 web component가 web response를 내보내는 구조에서
    • web component(java의 servlet)는 web container(servlet container로 tomcat..)안에 존재해서 컨테이너에서는 life cycle을 관리하게 된다.
    • 이 때 web container는 하나 이상의 web component를 갖게되는데, client로 들어온 요청을 어느 component가 담당할지 연결해주는 handler mapping 작업 등을 하게 된다.
  • spring container의 경우
    • servlet container없이 안되는데, servlet container 뒤쪽에 존재하면서 servlet container로부터 전달받은 요청을 bean에게 전달하는 방식이다.
    • 이렇게 통신하려면 servlet container를 띄워야하고, 그러기 위해선 web.xml로 서블릿 클래스도 연결하고 war로 만들어서 올려야하고 배포하고 등등 설정이 복잡하게 된다.
  • 이러한 수고를 제거하기 위한 containerless가 고민된 것으로
    • 이말은 즉슨 containerless를 통해 각각의 서비스들을 나눠서 containerized시키고 orchestrated화하기 위함을 목적이라 할 수 있겠다.
    • 여러개의 서비스를 한개의 container에 넣게 되면, 어찌되었던 다운타임이 발생할 수 있고 이것은 큰 비용으로 이어질 수 있다. 특히 이러한 구조는 cloud환경에서 중요한 사항이다.

그래서 containerless하려면?

  • 예를 들어 Kubernetes에서 서비스를 올리게 되면, 리소스나 네트워크와 같은 상세 정보를 알지 못해도 Kubernetes 환경이 가진 이점을 그대로 사용할 수 있다.
  • spring 또한 이전의 web.xml에 서블릿 컨테이너를 올렸던 대신, spring boot를 통해 실현할 수 있다고 볼 수 있다.

containerless의 단점은?

  • 추상적인 이야기이지만, 표준화되도록 만들어야한다는 것. 안그러면 결국 벤더에 종속하게 된다는 점이 있다.