해당 포스팅은 해당 게시글을 번역한 포스팅임을 명시합니다. 문제 어떻게 레거시 모놀리스 애플리케이션을 마이크로서비스 아키텍처로 마이그레이션합니까? 해결방법 레거시 애플리케이션을 중심으로 새로운(srangler) 애플리케이션을 점진적으로 개발하여 애플리케이션을 현대화합니다. 이 시나리오에서 srangler 애플리케이션에는 마이크로서비스 아키텍처가 있습니다. 해당 그림은 전체적인 모놀리스 어플리케이션의 사이즈를 줄여감으로써 도메인 별 서비스로 쪼개놓고 신규 기능은 신규기능의 서비스로 분리하여 점차 모놀리스 어플리케이션을 말라 죽이는 방법입니다. Strangler 어플리케이션은 두가지 서비스 유형으로 되어있습니다. 첫째, 이전에 모놀리스 어플리케이션에서 사용되던 기능을 가진 서비스 둘째, 새로운 기능을 도출해..
안녕하세요. 오늘은 Spring Boot 서버가 종료될 경우 클라이언트의 요청에 대해서 응답받지 못한 이슈에 대해 공유하고자 합니다. 클라이언트는 별도의 spring boot 서버였고 서버A라 지칭하겠습니다. 네트워크 타임아웃에 대해서 30초의 간략한 시간으로 설정해두었습니다. 서버는 마찬가지로 별도의 spring boot 서버였고 서버B라 지칭하겠습니다. 서버A에 의해 다수의 요청을 받는 환경에서 서버B를 종료했을 경우, 서버A에서 네트워크 타임아웃이 발생하였습니다. 그 이유는 바로 서버B의 종료가 급격하게 이루어짐으로써 몇개의 요청에 대한 응답이 유실되었기 때문인데요. 이것은 서버의 종료(shutdonw) 속성이 IMMEDIATE 으로 되어있었기 때문입니다. 해당 속성은 서버가 종료될 때, 들어온 요..
MSA를 준비하는 도중에 도메인 분리를 해야하는데..! 그러기 위해서는 Dababase에 있는 테이블들부터 우선 구분을 할 필요가 있었다..! 따라서 전체 테이블이 800개가 넘어가는 모놀리틱한 데이터베이스의 전체 테이블을 파일로 저장하기 위해서 아래의 쿼리를 확인해보았더니 SELECT * FROM pg_catalog.pg_tables; 전체 schema의 테이블이 조회되어 시스템 테이블도 함께 조회된다. (pg_catalog) 따라서 where절에 다음과 같은 조건을 붙여 결과를 확인했다. SELECT * FROM pg_catalog.pg_tables where schemaname = 'public'; 그러니 현재 관리하고 있는 모든 데이터베이스 테이블의 목록을 구할 수 있었다!