HTTP는 기본적으로 Connectionless하고 Stateless한 프로토콜이지만 로그인 상태 유지 등을 위한 목적으로 Session 혹은 Cookie를 이용하여 Stateful하게 사용합니다. 그런데 하나의 WAS에서 Session을 이용하여 서비스를 제공하는 서버에서 사용자가 증가해 서버를 증설하게 되었을때 각 WAS는 개별적으로 세션을 관리하기 때문에 세션이 공유 되지 않습니다. 이는 로드벨런서를 통해 로그인 요청이 1번 WAS에 들어와 로그인 처리를 하였지만 권한이 필요한 다른 요청이 2번 WAS에 들어왔을때 해당 WAS의 세션에는 권한이 인가되어 있지 않아 올바르지 않게 작동한다는 것을 의미합니다. 이 문제를 해결하기 위해서는 두 서버간 세션이 공유되어야 하고 이를 세션 클러스터링이라 합니다..
우리는 '12요소 방법론'을 배우면서 환경에 따라 DB나 스토리지 등 설정 정보들이 달라질수 있기 때문에 어플리케이션 구동 시에 설정 정보들이 주입될 수 있도록 해야한다고 배웠습니다. 이를 위해서 Spring Cloud Config를 이용하여 프로젝트를 구현해보도록 하겠습니다. Spring cloud config는 분산 시스템에서 설정파일을 외부로 분리하는 것을 지원하기 때문에 외부 속성을 중앙에서 관리할 수 있으며 어플리케이션의 재배포 없이 적용이 가능합니다. 준비 Spring cloud config를 테스트해보기 위해서는 3개의 Git Repository가 필요합니다. Config Properties Files Spring Cloud Config Server Spring Cloud Config Cli..
'CMS' Contents Management System 서비스를 운영하다보면 페이지를 추가한다거나 네비게이션바 구조 변경, 게시판 등의 모듈을 추가 혹은 단순한 정적 페이지의 DOM이나 텍스트를 변경하는 일은 정말 너무나도 흔한 일입니다. 그런데 위와 같이 단순한 작업을 할때마다 서비스 배포를 위해서 인건비가 비싼 개발자가 계속 투입되어야한다면? 그건 정말 비효율적인 구조가 아닐 수가 없습니다. 물론 CI/CD를 이용해서 서비스를 간편하게 배포 할 수 있지만 그럼에도 새로 배포한다는 것은 리스크가 동반되는 작업이라는 것은 자명한 일입니다. 만약 무중단 서비스가 구축되어 있지 않다면 서비스를 재배포 하는 순간 서비스가 재시작하여 완전히 로드 될때까지 일시적으로 멈출수도 있습니다. 그런데 매주 웹페이지의..