분류 전체보기

단계별로 성장하자!
프로젝트를 진행하면서 Local 환경이 아닌 다른 환경에서는 JNDI를 이용하여 Datasource를 적용하게 되었다. WAS에 DB Resource가 등록되어 있는 이유 상황) 우선 여러개의 Datasource에 연결해야 했고, Jeus라는 WAS에 DB Resource 정보를 모두 저장해 놓은 상태였다. 여기서 왜 WAS에 Data Resource를 설정해 놓았는지 의문이 들 수 있다. (나도 그랬다..) 보통 지금까지 개발할 때는 순수 JDBC나 Spring에서 제공해주는 기본적인 DBCP를 사용해왔다. 하지만, 실제 운영할 때는 JDBC 설정을 WAS에서 하는게 유리한 경우가 있다. 그 이유는 미들웨어를 관리하는 인력은 따로 있다. 하나의 WAS에 여러개의 웹 어플리케이션을 구동하는 경우가 있고,..
최근 프로젝트에서 SessionFilter를 GenericFilterBean나 Filter가 아닌 OncePerRequestFilter를 extends하여 구현하게 되었다. 왜 OncePerRequestFilter를 사용했는지 이 글에서 다뤄보고자 한다. 우선 위 그림을 통해 Filter의 동작 순서에 대해 알아볼 수 있다. Filter는 DispatcherServlet 실행 전 후에 호출되는데, Filter를 사용하다보면 Filter가 중복으로 호출되는 경우가 발생한다. Filter가 중복 호출되는 Case Filter는 Servlet마다 호출되며, Servlet은 요청마다 Servlet을 생성해서 메모리에 저장한 뒤 같은 클라이언트의 요청이 들어오면 생성해 둔 서블릿 객체를 재활용한다. 하지만, 위 ..
CI/CD 패턴CI(Continuos Integration) / CD(Continuous Delivery/Deloyment)MSA 환경에서 비지니스 민첩성을 키우기 위해서는 배포 자동화를 구축할 필요가 있다. 이때, 자동화된 빌드나 배포 작업을 보통 CI/CD라고 부른다. 일반적인 플로우는 아래와 같다.새로운 버전의 코드와 테스트 코드를 함께 Github와 같은 형상 관리 시스템에 Push 한다.빌드 도구에서 특정 시간에 형상 관리 시스템으로부터 코드를 Pull해서 통합한 후에, 자동으로 빌드하고 테스트 코드를 실행하여 테스트를 수행한다.테스트 수행 결과를 따로 로그 파일에 리포팅하고, 빌드된 소스코드를 스테이징 환경에 자동으로 배포한다.QA 테스터가 스테이징 환경에서 테스트를 수행하고, 문제가 없으면 ..
MSA 아키텍처 MSA를 구성하기 위해서 많은 외부 구성요소들이 사용된다. 가장 아래부터 기반인 인프라 영역, 인프라 영역 위에 애플리케이션을 구동하기 위한 플랫폼 영역, 플랫폼 영역 위에 애플리케이션 영역으로 구성된다. 가상화 기술이 나온 이유 예전에, 학내 컨퍼런스에서 이러한 주제로 발표를 진행한 적이 있어, 해당 자료로 다시 정리했다. 가상 인프라 환경을 활용할 때, Virtual Machine과 Container 기반 Product 중에 하나를 선택해야 한다. 가상화 기술이 나오기 전에는 한대의 서버는 하나의 용도로만 사용 가능 남는 서버 공간은 그대로 방치 하나의 서버에 하나의 운영체제만 실행 가능 하다는 상당히 비효율적인 문제가 있었다. 서버의 성능을 나눠서 사용할 수 있게 하기 위해 등장한게..
MSA를 공부하게 된 계기 예전에 모 스타트업의 기술면접에서 "유명 가수 공연 티켓팅으로 밀려올 특정 기간에 몰려올 트래픽에 대비하려면 어떻게 해야 하는가?" 라는 질문을 받았었다. 당시 나의 답변은, Auto-Scaling과 Waiting Queue를 사용하는 방법이었다. CPU 사용량은 특정 수치를 넘어가면 인스턴스를 복제하고, 메시징 큐를 사용하여 트래픽 제어에 따라 실제 대기 중인 사용자들의 식별 가능한 아이디를 담은 메시지를 관리하고 비용 효율성 있는 방법으로 해결할 수 있다고 생각했다. 하지만, 고려하지 않았던 부분이 있었는데 실제 사용자는 수만 명, 수십만 명이 동시에 같은 0.1초 이내로 몰릴 수도 있다는 것이다. 이런 상황에 Auto-Scaling 방식을 사용하면 인스턴스가 복제되고 애플..
버전 업그레이드 배경 프로젝트에서 U2L(Unix To Linux) 작업을 진행하며 최신 Linux에서 권장하고 또한 보안 취약점 검사 통과를 위해 JDK 버전으로 올려야 하는 일이 발생했다. 해당 과정에서, 하는김에 관련된 서브 시스템의 Spring Boot 버전도 같이 올리게 되었고, Migration 계획을 세우면서 공부했던 것들을 공유하고자 한다. 내가 원하는 버전은 2.7.18버전이었고, 단계별로 버전을 업그레이드 하면서 진행하려고 했으나 서브 시스템이기에 코드양도 많지 않고 수정할 부분이 많지 않을 것으로 판단하여 한 번에 올리게 되었다. (이렇게 해서 문제가 발생하지는 않았지만, 여러분들은 큰 업데이트가 있었던 버전들을 차례대로 업그레이드 하는 것을 추천한다.) 마이그레이션 순서 1. 마이그..
DevPoong
'분류 전체보기' 카테고리의 글 목록 (2 Page)