tech/architecture 4

[architecture] ASP.NET Core 서버의 Event Loop 동작

회사에서 서비스 트래픽은 대부분 ASP.NET Core 로 작성한 API 서버로 받아서 처리한다. ASP.NET Core 서버는 내부적으로 Kestrel 이라는 웹서버를 이용하여 여러 소켓으로 들어오는 요청들을 동시에 처리해 응답하는데, 오늘은 해당 서버들의 내부 Event Loop 작동방식에 대해 정리해보려 한다. ASP.NET Core의 이벤트 루프(Event Loop) 개념ASP.NET Core는 전통적인 블로킹 방식의 스레드 기반 모델이 아니라, 비동기 I/O를 적극 활용하여 이벤트 기반(Event-driven) 비동기 방식으로 동작한다. 하지만 Node.js처럼 단일 이벤트 루프 모델을 사용하는 것은 아니며, 대신 비동기 태스크 기반의 스레드 풀(Thread Pool)과 이벤트 루프(Event ..

tech/architecture 2025.02.06

Two-Phase Commit(2PC)와 SAGA 패턴에 관하여

두 개의 분산 트랜잭션 처리 기법인 Two-Phase Commit(2PC)과 Saga 패턴의 컨셉 정도만 가볍게 정리한다. Two-Phase Commit(2PC)과 Saga 패턴 은 분산 시스템에서 데이터 일관성을 유지하기 위한 여러 방법들중 대표적인 2가지 이다. 먼저, Two-Phase Commit은 분산 트랜잭션을 원자적으로 처리하기 위한 프로토콜로, 트랜잭션이 성공적으로 완료되었는지 여부를 모든 관련 노드가 합의하는 절차를 가진다. 2PC는 두 가지 단계로 나뉜다. 첫 번째 단계에서는 모든 노드가 트랜잭션을 커밋할 준비가 되었는지 확인하고, 두 번째 단계에서는 준비가 된 경우 트랜잭션을 실제로 커밋하거나 실패한 경우 롤백을 진행한다. 이 방식은 일관성을 보장하지만, 장애 발생 시 시스템이 오랫동안..

tech/architecture 2024.09.18

캐시 구현 패턴 정리

1,2 번은 읽기 전략이고 3,4번은 쓰기 전략이다.cache aside클라이언트는 캐시에서 먼저 조회 후, 없으면 database에서 캐시에 캐싱후 읽는다read-through클라이언트는 캐시에서 조회한다. 존재하지않으면 클라이언트가 직접하는게 아니라 캐시쪽에서 자동으로 DB에서 데이터를 조회해 저장 후 반환한다. 클라이언트는 사실상 캐시만 바라보게 되어 코드구조는 매우 단순해진다.write throughwrite 할 일이 있을때마다, 캐시에 먼저 반영 후 데이터베이스에 반영한다. 캐시와 데이터베이스의 일관성이 매번 지켜지므로, 이 성질이 매우 중요한 경우 고려해볼 수 있다. 또한 쓰기작업은 적은데 읽기작업이 많은 경우 + 실시간으로 최신데이터가 필요한 경우 write through 방식이 적극 고려..

tech/architecture 2024.03.29

분산시스템 CAP 이론에 대하여

Overview CAP이론은 분산 데이터베이스의 속성을 기술하는데 사용된다. CAP 이론을 이해하다 보면 분산시스템에서 발생 할 수 있는 일들과 이에 대한 대응을 하나하나 따져보게 되는데, 이점이 분산시스템이 가지고 있는 본질적인 성능에 관해 이해하는데 도움을 준다. Consistency (C)— 어떤 시간에서의 읽기를 하더라도 가장 최근 쓰기된 데이터가 읽힌다 Availability (A)— 어떤 상황에서도 항상 reasonable 시간안에 reasonable한 응답을 한다 Partition Tolerance(P) — network partition 발생하더라도 계속 동작한다 간단한 AP, CP 시스템 CAP이론은 간단하게 분산시스템은 CAP에서 최대 2가지의 속성만 만족할 수 있다이지만, 좀더 생각해..

tech/architecture 2024.03.24