글

라벨이 MSA인 게시물 표시

Apache Kafka 사용기

이미지
 안녕하십니까. 이번 포스팅에서는 제가 사용하였던 아파치 카프카 에 대하여 간략하게 리뷰하려고 합니다.  Apache Kafka 아파치 카프카란? 아파치 카프카란 오픈소스 기반 확장 가능한 분산 스트리밍 플랫폼 입니다. 이에 대하여 각각 살펴봅시다. 아래에서의 모든 예시는 광고 노출 데이터로 가정하겠습니다.  확장 가능 분산 수평 확장이 가능하다는 말은 kafka에 트래픽이 몰리면 이를 위해 클러스터에 리소스를 더 투입할 수 있다는 말입니다. 스트리밍 pub sub 구조 스트리밍이라는 말은 데이터가 흐름과 같이 오면 이를 받아서 처리한다는 것과 비슷합니다. 예를 들어서 자료구조의 Queue를 생각하시면 편합니다. 이와 같은 구조를 펍 섭 구조라고 합니다. 데이터를 계속 넣어주는 부분을 publish 이라고 합니다. 이를 받아서 처리하는 부분을 subscribe 라고 합니다. pub sub은 디자인 패턴 중 하나로써 중간 플랫폼을 카프카가 담당을 하게되고, pub sub 부분은 개발자가 직접 디자인 해야 합니다.  Producer : 카프카에 데이터를 넣어주는 역할을 합니다. 예를 들어서 광고 노출이 직접 노출되는 클라이언트 코드에서 노출 데이터를 Producing하여 카프카에 전송 합니다.  Consumer : 카프카에 있는 데이터를 받아서 처리하는 역할을 합니다. 예를 들어서 광고 노출 데이터를 받아서 과금을 하는 등의 처리를 할 수 있습니다.  Partition Group Topic 카프카의 이해를 쉽게하기 위해서 다음과 같이 도식화 하였습니다. 카프카의 파티션 도식화 Message : 카프카 데이터의 가장 작은 단위 입니다. 예를 들어서 광고 노출 데이터라고 할 시에 노출 데이터 한건으로 볼 수 있습니다. Topic : 데이터의 그룹 중 가장 큰 단위 입니다. 예를 들어서 광고 노출 Topic으로 볼 수 있습니다. Partition : 토픽을 나누는 단위 입니다. 예를 들어서 광고 노출 토픽을 파티션 ...

NAVER 오픈소스 세미나 - Performance does matter

이미지
안녕하십니까. 오늘 네이버 D2 세미나에 다녀와서 포스팅을 합니다. 해당 세미나에서는 APM을 다루는 오픈소스들에 대하여 공유 하는 자리 입니다. 영어 듣기 실력이 좋지 않아서.. 영어 세미나는 듬성듬성 들은것 같습니다. 네이버 핀포인트 측에서 이참에 외국 개발자도 초청하고 했다고 합니다. 제가 다니는 회사에서는 DevOps를 해주는 팀에서 자체적으로 개발한듯 한데 제 입장에서 회사 코드랑 비교하면서 공부하면 많이 배울듯 합니다. Key Note - Overall Pinpoint - 강운덕 (NAVER) 연사분은 네이버에서 핀포인트를 담당하는 Founder. 핀포인트의 현황 (네이버) 만여대의 에이전트 87만 TPS -> 네이버의  준비하는 기능 멀티 언어 지원 RPC 레이어가 여러가지 문제가 있음. 몇몇 언어는 멀티 쓰레드가 안됨. php 파이썬 노드 루비 → 그래서 C로 변경 Transport Layer를 gRPC로 변경 예정 istio/envoy 오픈 트레이싱 Node JS Agenct Apache SkyWalking - APM supports traditional distributed system and Cloud Native stack  - Wu Sheng (Leader of Project Skywalking, Tetrate) Apache SkyWalking은 분산 어플리케이션 성능 모니터링 시스템 Observability Analysis Platform Receiver : gRPC에 조음. Zipkin, Jaeger 포멧 Analysis Core : Streamimg Distributed Computing Engine Object Oriented Analysis  - Service  - Service Instance  - Endpoint GraphQL 동영상 링크 :  https://www.youtube.com...

Clean Architecture with .net

이미지
안녕하십니까. 이 글은 Clean 에 대한 글이며 다음과 같은 자료를 참고하였습니다. 로버트 C. 마틴( Robert  C .  Martin )의 책인 Clean Architecture Youtube Clean Architecture with ASP.NET Core 2.1 Clean Architecture Clean Architecture Clean Architecture는 Hexagonal Architecture라고도 불리며 port and adapter 라고도 불리는 개념 입니다. 개인적으로 DDD, MSA를 공부하게 되는 일이 생겨서 공부하게 되었습니다. 아래 그림은 동영상의 Overview 피피티 입니다. 아래 그림의 원 모양을 경우에 따라서는 다각형으로 표현하여 이에 대하여 Hexagonal Architecture라고 부르고 각 Layer끼리의 연결은 port and adapter 형식으로 한다고 합니다. 각 레이어를 분리하여 이를 통하여 비즈니스 로직, 프레임워크 의존적인 로직, 데이터 베이스 로직, 뷰 로직등을 각각 분리 합니다. 각각 레이어 상의 의존성은 안쪽으로만 가능하도록 합니다. 각 Layer의 관계를 추상화, interface (port)로 연결하여 느슨한 결합이 가능하도록 합니다. Clean Architecture의 Core가 추상화 인듯 합니다.  이러한 분리를 통하여 원할한 테스트, 프레임 워크, 디비가 변동하여도 쉽게 변동 가능한 이점이 존재 합니다. Domain Layer 도메인 레이어는 아래와 같이 Entities, Value Object와 같은 도메인 객체를 표현 합니다. Annotation 데이터를 표현하는데에 있어서 보통 OOP 관점으로 데이터에 Annotation을 통하여 제약을 주곤 합니다. 발표자는 그러한 어노테이션 보다는 아래 코드와 같이 해당 로직을 바깥으로 빼는것을 추천 하였습니다. ...