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. 마이그..
FEP (Front End Processor) 보통 금융 관련으로, 전용선을 통해 대외적 거래 또는 B2B 연계에 사용되는 통신 방식으로, Client와 BE Server 사이에서 통신 제어 및 처리를 위한 시스템을 의미한다. 암호화되어 FEP 서버로 전달된 외부 전문을 내부 전문으로 변환하여 내부 서버에서 사용할 수 있게 해주는 역할도 한다. EX) 금결원에 고객의 계좌를 조회 or 증권사에서 거래소의 주문 시스템에 접근 FEP를 통해 외부 전문이 내부 전문으로 변환되면 코어 시스템이나 배치 시스템 같은 곳에 전달되어 활용된다고 생각하면 된다. 위에 작성했듯이 개인이 적립받은 포인트를 현금으로 전환하고 싶다고 했을 때, FEP와 금결원이 연결된 전용선을 통해 계좌를 조회할 수 있다.
Thread Process의 작업은 Thread 단위로 나눌 수 있다. 그리고 CPU Core가 Thread 단위로 작업을 처리하게 된다. 결론적으로 Thread는 CPU Core의 실행 단위이다. Thread를 사용함으로서 하나의 Process에서 두 가지 이상의 작업을 동시에 실행 가능하게 된다. Thread를 단순하게 사용할 때 문제점 새로운 요청이 들어올 때마다 새로운 Thread를 생성한다고 가정하고 문제점을 생각해보자. 생성 비용이 큰 Thread Thread는 생성 비용이 크다. 따라서 해당 방식으로는 요청에 대한 응답시간이 늘어날 수 밖에 없다. 아래 그림을 보면서 더 자세하게 알아보자. Java는 One-to-One Threading-Model로 Thread를 생성한다. User Thre..
XSS(Cross-Site Scripting) 공격자가 웹 상에서 SQL Injection과 같은 방법으로 공격하려는 사이트에 악의적인 스크립트를 주입하는 공격이다. 주로, 다른 웹 사이트와 정보를 교환하는 방식으로 동작하기 때문에 Cross Site Scripting이라고 명칭한다. 해당 취약점은 웹 애플리케이션이 사용자의 입력값을 제대로 검사하지 않고 사용할 경우 나타날 수 있으며, 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 강제로 실행하게 된다. 일반적으로 쿠키, 세션, 토큰을 탈취하거나 다른 민감한 정보를 탈취하거나 클라이언트 코드를 재작성하여 해킹하기도 한다. 악의적인 컨텐츠로는 자바스크립트를 사용하여 공격하는 경우가 많다. 1) 쿠키나 세션 정보 탈취 2) 접속자를 자신이 의도한 ..