CS

CS 관련한 것 또는 궁금한 것을 찾아보고 기록을 남깁니다.

분산 환경에서의 트랜잭션 처리 - Transactional Outbox pattern

분산환경에서의 데이터 전달 방식에 대해

Transactional Outbox Pattern 분산시스템에서 트랜잭션의 원자성을 보장하기 위해, 분산 트랜잭션(2PC 등)을 활용할 수 있다. 트랜잭션 아웃박스 패턴은 트랜잭션과 이벤트 발행이 원자적으로 처리되어 데이터의 일관성을 보장하기 위해 등장했다. 트랜잭션 내에서 발생한 이벤트를 데이터베이스에 미리 저장해두고, 트랜잭션이 성공적으로 완...

분산 환경에서의 트랜잭션 처리 - 2PC, Saga pattern

분산환경에서의 데이터 전달 방식에 대해

MSA에서 트랜잭션 트랜잭션이란, 우리가 데이터를 이용해 수행하고자 하는 작업의 집합이다. 분산 환경에서는 DB가 분리되어 있기 때문에 여러 DB의 원자성을 보장하기가 어렵다. 각 서비스가 다른 서비스와 일관성을 유지해야 하기 때문에 일반 트랜잭션보다 더 복잡하다. 원자성이란, 트랜잭션의 연산은 DB에 모두 반영되거나, 모두 반영되지 않아야 하는...

분산시스템이란?

분산환경에서의 데이터 전달 방식에 대해

분산 시스템 목표를 달성하기 위하여 여러 개의 컴퓨터 리소스를 사용하는 시스템 시스템은 2개 이상의 컴포넌트로 구성되어 있다. 엔터프라이즈 애플리케이션 마이크로 서비스 아키택처 어플리케이션 모놀리틱 아키텍처 어플리케이션 + 검색엔진 네트워크를 사용하여 컴포넌트 간의 기능을 통합한다. ...

Latency 관리 전략

시스템의 안정성과 사용자 경험을 향상시키기

latency 관리 전략 Consumer가 트래픽을 감당하지 못해 지연(latency)이 발생할 때, 이를 완화하거나 해결하기 위한 다양한 전략이 있다. 시스템의 성능을 유지하고, 트래픽 급증 시에도 안정성을 보장하기 위해 설계하기 위함이다. 일반적으로 대용량 트래픽 처리와 관련된 latency 전략에는 보통 이런 것들이 있다. 로드 밸런싱...

API Rate Limiting

시스템의 안정성과 사용자 경험을 향상시키기

API Rate Limiting란? API Rate Limiting은 API에 대한 요청 수를 일정 시간 동안 제한하는 메커니즘이다. 주로 서비스의 안정성을 유지하고, 특정 API에 대한 과도한 요청으로 인해 발생할 수 있는 문제를 방지하기 위해 사용된다. 예를 들어, 특정 API가 초당 100개의 요청만 허용한다고 설정하면, 그 한도를 초과하는 요청...

Dead Letter Queue

Architecture

DLQ(Dead Letter Queue)란? 애플리케이션이 메시지를 처리하는 과정에서 예상치 못한 문제가 발생할 수 있다. 메시지가 특정 조건을 만족하지 않거나, 여러 번의 재시도에도 불구하고 성공적으로 처리되지 않는 경우, 이러한 메시지는 어떻게 처리해야 할까? 이때 사용되는 것이 바로 Dead Letter Queue(DLQ)이다. DLQ의 개념...

메세지 큐

Architecture

메세지 큐란? 메세지 큐(Message Queue)는 소프트웨어 시스템에서 데이터를 비동기적으로 교환하기 위해 사용하는 통신 방법 중 하나이다. 생산자(producer)가 보낸 메세지를 일시적으로 저장하고, 소비자(consumer)가 필요할 때 그 메세지를 가져가 처리할 수 있도록 돕는다. 이를 통해 두 시스템 간에 데이터 전송이 이루어지며...

배경지식 쌓기 - 무중단배포

DevOps

무중단 배포 서비스를 중단하지 않고 배포하는 것 무중단 배포의 핵심은 로드밸런서(Load Balancer)를 통해 연결된 두 개 이상의 (서로 다른 IP, 포트를 가진) 인스턴스에 트래픽을 제어해 배포하는 것이다. v1서비스가 실행중일 때, v2 서비스를 시작하려면 v1서비스가 중단되는 다운타임이 생기고 나서 v2를 실행할...

배경지식 쌓기 - E2EE

End-to-End Encryption

E2EE 종단 간 암호화 End-to-End Encryption 전송자와 수신자 사이의 커뮤니케이션을 암호화하는 방법 메시지를 보내는 곳부터 받는 곳까지 모든 과정에서 암호화된 상태로 메시지를 전달하는 것 사용자들의 중간에서 메세지를 경유하는 서버가 메세지를 열어보지 못하게 하여 사생활의 노출을 막을 수 있는 기술 E2EE가 적용...

CI/CD - Github Actions

CI/CD

github action 코드를 push하면 github.com에서 컴퓨터를 하나 빌려주는데, 이것이 runner다. 내 코드의 로직은 아무것도 없는 runner라는 가상머신에서 실행되면서 테스트나 deploy, 메세지 등의 처리를 할 수 있게 된다. 구조 아래 4가지로 구성되어 있는데, 각 컴포넌트는 하위 단계를 포함한다. Wor...

코드분석도구 - SonarQube

정적코드분석도구

정적 분석 실제로 실행하지 않은 상태에서 소스 코드나 컴파일된 코드를 이용해 프로그램을 분석하는 방법 소스코드의 모든 부분을 확인할 수 있다. 실행 환경에서의 상태를 정확히 알 수 없다. 실행할 때에만 알 수 있는 데이터가 필요한 경우 정확히 분석할 수 없다. 코드 상의 문제나 실수를 찾을 수 있다. 동적분석 프로그램을 실제 ...

배경지식 쌓기 - DID

Decentralized Identifier

DID(Decentralized Identifier) 블록체인을 활용한 탈중앙화 신원증명 기존 방식과 달리 개인이 자신의 정보에 완전한 통제권을 갖도록 하는 기술 예) COOV(질병관리청 백신 패스 쿠브) -> 증명 서류를 인증하면 이후 다시 인증할 필요가 없다. GR인증을 통해 이용자의 백신 접종 유무를 확인...

배경지식 쌓기 - 메타버스

Metaverse

메타버스 (Metaverse) 가상, 초월(meta)과 세계, 우주(universe)의 합성어. 3차원 가상세계를 의미한다. 메타버스의 유형 AR/VR기술의 적용 대상(외적인지, 내적인지)과, 현실과의 관계(증강인지, 시뮬레이션인지)에 따라 4가지 유형으로 구분 증강현실AR : 외적대상(물리적 환경)에 증강현실을 혼합시켜놓은 것. ...

배경지식 쌓기 - 블록체인

Block Chain

블록체인 (Block Chain) 데이터를 거래할 때 중앙집중형 서버에 기록을 보관하는 기존 방식과 달리, 참여자 모두(일정한 조건을 갖춘 노드)에게 내용을 공유하는 분산형 디지털 장부다. 거래정보를 기록한 원장을 톡정 기관의 중앙 서버가 아닌 P2P(Peer-to-Peer) 네트워크에 분산하여 참가자가 공동으로 기록하고 관리하는 기술이다. ...

배경지식 쌓기 - NFT

Non-Fungible Token

NFT (Non-Fungible Token) 대체 불가능한 토큰 토큰마다 고유의 값을 가지고 있어 A 토큰을 B 토큰으로 대체할 수 없는 토큰 기존 비트코인, 이더리움 등과 같이 발행된 가상자산이 서로 동일한 기차로 거래할 수 있는 대체 가능한 토큰이 아닌, 각 토큰이 서로 다른 가치를 가지고 있는 고유한 자산을 의미 ...

배경지식 쌓기 - KYC, e-KYC

Know Your Customer

KYC (Know Your Customer) 의미 금융 기관이 은행 계좌 예금주의 신분을 확인하기 위해 따라야하는 일련의 규정 고객의 신원을 확인하기 위한 개인의 정보들을 수집해야된다는 내용이다. 암호화 및 2단계 인증 등과 같은 보호 장치를 활용함 은행 및 금융 기관을 사기로부터 보호하기 위한 가이드라인. 특징 기업의 ...

배경지식 쌓기 - 템플릿 메소드 패턴

Template Method Pattern

템플릿 메소드 패턴 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화 해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 슈퍼 클래스에 기본적인 로직의 흐름을 만든다. 그 기능의 일부를 추상 메소드나 오버라이딩이 가능한 protected 메소드 등으로 만든다. 서브클래스에서 이런 메소드를 필요에 ...

배경지식 쌓기 - 테스트 자동화

Software Test Automation

테스트 자동화 소프트웨어 테스트 케이스 개발, 테스트 수행, 테스트 커버리지 측정 등 소프트웨어 테스트 과정 일부 또는 전체를 수작업이 아닌 자동화된 프로그램을 통해서 수행하는 기법 테스트 자동화 기술 설계 명세기반 테스트 설계: 소프트웨어 명세로부터 테스트 절차, 데이터, 드라이버 등 생성 코드기반 테스트 설계: 소스로부터 테...

배경지식 쌓기 - Active Directory

AD

액티브 디렉토리 회사 직원들의 계정정보와 컴퓨터에 대한 정보, 회사에서 강제하고자 하는 정책들에 대한 정보를 저장하고 있는 일종의 데이터베이스 MySQL 같은 데이터베이스와는 달라서, 암호화되어 저장되어 있음 도메인 Active Directory의 가장 기본이 되는 단위 AD가 설피된 윈도우 서버가 하나의 도메인이라고 볼 수 ...

배경지식 쌓기 - UAT

User Acceptance Testing

UAT User Acceptance Testing 최종 사용자 테스트 사용자 또는 클라이언트가 소프트웨어를 수락할 수 있는지 여부를 결정하기 위해 소프트웨어를 테스트 하는 것 기능, 시스템 및 회귀 테스트가 완료되면 수행되는 최종 테스트. 제품이 출시되기 전 마지막 단계. 주요 목적 : 비즈니스 요구 사항에 대해 소프트웨어를 검증하는...

배경지식 쌓기 - EDW

Enterprise Data Warehouse

EDW Enterprise Data Warehouse ODS를 거쳐 운영 데이터베이스(Operational Database) 및 외부 데이터 Source로부터 필요 데이터를 추출하여, 경영분석/의사결정의 지원을 위해 최적화된 구조로 변환된 데이터베이스 ODS Operational Data Store 의사결졍 지원 측면에서 EDW를...

배경지식 쌓기 - 스크럼

애자일하게 합시다

Scrum 복잡한 제품을 개발하고 유지하기 위한 프레임워크 비즈니스 요구를 충족시키는 데 초점을 맞추기 해서 작은 목표를 짧은 주기로 개발. 점진적으로 경험적으로 제품을 지속적으로 개발하는 관리 프레임워크 솔루션에 포함할 기능/개선점에 대한 우선 순위를 부여한다. 개발주기는 1~4주 정도로 하고 개발 주기마다 실제 동작할 수 있는 결...

배경지식 쌓기 - MCI/MCA, ESB, FEP

시스템 연계 용어들

System Integration MCI Multi Channel Integration MCA Multi Channel Architecture 주로 기업 내부 동기종 또는 유사기종 시스템을 연계시키는데 사용된다. 은행에서 여신 업무와 수신 업무는 MCI/MCA를 통해 연계된다. ESB Enterprise Service Bus ...

배경지식 쌓기 - Edge Computing

클라우드에서 엣지 컴퓨팅으로

Edge 데이터 소스가 있는 장치 Edge continuum 장치(edge) -> 게이트웨이(near edge) - 온프레미스 클라우드 - 지역 데이터 센터 - 클라우드 엣지를 시작으로, 실행가능한 컨티넘 컴퓨팅으로 이동하는 것 데이터 소스가 있는 장치에서 시작되는 완전히 탈중앙화된 모델 해당 장치로 컴퓨팅을 가져오는 ...

배경지식 쌓기 - On-premise

온프레미스

클라우드의 반대말 온프레미스 온프레미스 : IT서비스를 우녕하는 회사가 자체적으로 보유한 공간에 물리적인 하드웨어 장비를 가지고 직접 운영하는 방식. 클라우드 컴퓨팅 이전의 가장 일반적인 인프라 구축 방식이었다. 필요한 시스템을 구축하기 위해 하드웨어와 소프트웨어를 구입하여 시스템 구성 상황에 맞게 환경을 구성한다. 서버실 또는 데이터 ...

배경지식 쌓기 - DLP

데이터 보안 솔루션

DLP Data Loss Prevention 데이터 손실을 방지해주는 주는 기술 에이터의 흐름을 감시하여 기업 내부의 중요 정보와 데이터 유출을 감시하고 기록한다. 데이터 이동 경로 감시 중 유출이 감지되면 경고 혹은 차단하여 데이터를 보호한다. DRM 솔루션은 이미지, 문서 등을 만들고 저장할 때마다 실시간으로 잠금 설정이 되어 그...

배경지식 쌓기 - AWS로 무중단 서버 배포하기

AWS 서버

24시간 작동하는 서버 만드는 방법 집에 PC를 24시간 구동시킨다 호스팅 서비스(cafe 24 등)를 이용 클라우드 서비스(AWS, AZURE, GCP 등) 이용 비용은 호스팅 서비스나 집 pc를 이용하는 것이 저렴 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리함 📙 1. 클라우드 서비...

배경지식 쌓기 - 디자인 패턴 Factory Method Pattern

GoF Design Pattern

팩토리 메소드 패턴 서브 클래스에서 구체적인 오브젝트 생성 방법을 결정하게 하는 것. 부모 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴 자식 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴 부모 클래스에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다 객체를 생성하는 메소드 != 팩토리 메소드 상속을 통해 기능을...

배경지식 쌓기 - 마이크로서비스

아키텍처

MicroService 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성된 경우 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식 이런 서비스는 독립적인 소규모 팀에서 보유한다. 마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축...

배경지식 쌓기 - 디자인 패턴 Observer Pattern

GoF Design Pattern

Observer Pattern 관찰자 패턴 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴 일대다 관계 상태가 업데이트되면 모든 옵저버들에게 정보를 갱신할 수 있도록 한다. 분산 이벤트 핸들링 시스...

배경지식 쌓기 - EAI

Enterprise Architecture Integration

EAI Enterprise Architecture Integration 정의 기업 내에서 필요한 각종 애플리케이션 간 상호 연동이 가능하도록 통합하는 솔루션 EAI가 필요한 이유 한 기업 내의 ERP 전사적자원관리, CRM 고객관계관리, SCP 공급망계획 시스템이나 인트라넷 등의 시스템간 서로 데이터를 주고받아야 하는데, 데이터를 주고받기...

배경지식 쌓기 - 디자인 패턴

GoF Design Pattern

디자인 패턴 모듈의 세분화된 역할이나 모듈들 간의 인터페이스 구현 방식을 설계할 때 참조할 수 있는 전형적인 해결방식 디자인 패턴을 통해 설계 문제, 해결 방법, 해결방법의 적용 방식과 결과를 알 수 있다. GoF(Gang of Four) 디자인 패턴 소프트웨어 공학에서 가장 많이 사용되는 디자인 패턴 목적에 따라 분류한 패턴...

배경지식 쌓기 - TDD 테스트 주도 개발

Test Driven Development

TDD 테스트 주도 개발 테스트를 먼저 만드록 테스트를 통과하기 위한 코드를 짜는 것이다. 만드는 과정에서 우선 테스트를 작성하고, 그에 해당하는 코드를 짜는 것을 반복하면서 제대로 동작하는지 피드백을 적극적으로 받는 것이다. 추상적으로 TDD의 핵심 개념을 말하자면 결정과 피드백 사이의 갭에 대한 인식, 갭을 조절하기 위한 테크닉이라...