글

라벨이 Architecture인 게시물 표시

적정 소프트웨어 아키텍처 후기

이미지
 안녕하십니까. 이번에는 적정 소프트웨어 아키텍처라는 책을 읽고 리뷰를 합니다. 적정 소프트웨어 아키텍처 특징 이 책은 아키텍처를 잡는데에 있어서 리스크를 위주로 생각하는 방법을 도입하는 책입니다. 그래서 책 전체적으로 다이어그램이나 그런게 많은 편입니다.  다이어그램 다이어그램이 아키텍처를 배우기 위한것은 아니고 이런 식으로 하였으나 이런식으로 생각한다는것에 초점이 되어 있습니다. 위의 예시를 보면 미디어 플레이어 시스템이라고 되어있으나 미디어 플레이어를 위했다기 보다는 다이어그램의 변화에 중점이 되어있습니다. 경험적 인사이트가 필요한 책 이론위주의 책이긴 하지만 좀더 쉽게 이해하기 위해서는 경험이 필요합니다. 아래의 지나친 설계 부분에 대하여는 설계를 중심으로 하면 산으로 간다는 말인데요. 이를 경험해봐야 그렇구나 하고 와닿는게 좀 많습니다.  waterfall의 단점 저연차 시니어에게는 글세 저는 현재 6년차 개발자입니다. 해당 책을 읽고 8장까지 읽다가 그만 읽었습니다. 읽지 않은 이유는 완전히 기술적이기보다는 이론 중심인점이 많습니다. 번역이 된 책이어서 그런건지 원래 이책이 그런건지 모르겠지만 살짝 잘 안읽히는 점이 많습니다. 신입 - 6년차의 개발자에게는 빠른 성장이 필요하지만 이런 책은 아직은 잘 모르겠습니다. 그래서 나중에 많은 경험을 쌓아보고 이책이 의미가 있는지는 추후에 다시 판단해보려고 합니다. 아직은 잘 와닿지 않네요. 

마이크로 서비스 패턴 후기

이미지
 안녕하십니까. 이번에는 마이크로 서비스 패턴라는 책을 읽어서 리뷰를 하려고 합니다.  이번책에서는 사진을 찍지 못해 버렸네요. 마이크로 서비스 패턴 MSA 패턴 : 사가, 이벤트 소싱 MSA에서의 분산 트랜잭션을 지원하기 위한 사가 패턴 등에 대하여 책에서 다룹니다. Eventuate tram(이벤추에이트 트램) 이라는 사가 프레임워크를 통해서 예시를 다루는 부분도 많습니다. 아직 국내에는 사가 기반 트랜잭션으로 구현된 회사가 별로 없을 것이라고 예상되는데요. 그런만큼 책을 통해서 많이 배울 수 있을것으로 보입니다. 처음 들어봤던 것 : 디비 로그 기반 이벤트 제가 이쪽 공부를 딥하게 한적은 없었던것 같습니다. 이 책을 읽으면서 약간 처음 들어본 기법이 있는데요. 디비 트랜잭션 로그를 통해 이벤트를 만드는 것이었습니다. transaction log tailing라고도 하는데요. 이런게 msa에도 사용된다는 것은 이번에 처음 알게 되었습니다. 코드 설명 예시 코드와 그에 대한 설명도 있습니다. 너무 과하지도 않으며 너무 적지도 않은 편입니다. 저는 당장 코드는 급하진 않아서 이해만 하려고 코드 부분은 건너뛰긴 하였습니다. 공개 깃허브 링크는 요기 .  읽어볼만한 책 MSA를 통해 분산 트랜잭션 등을 구현하는 책입니다. 서로 다른 도메인에서의 싱크를 맞추기 위함인데요. 너무 쉬운편도 아니고 너무 어려운 편도 아니라서 읽을만하다고 생각합니다.

데이터 중심 애플리케이션 설계 책 후기

이미지
안녕하십니까. 시니어 개발자이다 보니 시스템 설계에 대하여 관심이 생겨서 공부 중에 있습니다. 리서치를 해보니 " 데이터 중심 애플리케이션 설계 " 라는 책을 추천해주신 분이 많은데요. 저도 이번기회에 읽어보았고 간단하게 후기를 남겨보려고 합니다.   분산 시스템, 데이터 베이스 관점 데이터 중심이라는 주제에 알맞게 전체적으로 분산 시스템과 데이터 베이스라는 관점에 초점에 되어 있습니다.  RDB, NOSQL, 데이터베이스 확장 가능성, 고가용성, 병렬 처리 등에 초점이 되어있습니다.  학부 수준에서 배우는 수준에서 살짝 어려운 수준입니다.  더티 쓰기에 대한 내용 설계 보다는 이론에 중심 책 내용이 설계라고 되어 있습니다. 다만 설계하는 방법을 다루지는 않습니다. 설계보다는 이론적으로 확장 가능한 시스템을 만들기 위한 문제에 대한 이론, 고민 등에 대하여 다루는 부분이 있습니다.  예를 들어 다음과 같이 2PC라는 개념이 있고, 이의 단점을 극복하기 위한 3PC라는게 있다는 것을 알려줍니다. 하지만 이것만으로는 설계에는 도움되긴 어렵고, 이론적 지식에는 도움이 될수는 있습니다.  3PC의 도입 깊이가 깊은책 책의 깊이가 상당히 깊은 편입니다. 특정 구조에 대하여 어느 소프트웨어는 어느 구조를 쓰고 다른것은 어떤지가 예시로 작성 되어 있습니다. 실제 코드 단까지는 아니더라도 책을쓴 저자는 대부분의 소프트웨어에 대한 세밀한 아키텍쳐까지 이해한 수준이라고 생각이 되며 개인적으로는 존경스럽네요.  실제 디비들의 예시 주니어보다는 시니어에게 추천 제 기억상 이 책을 주니어때 한번 읽은 기억이 있습니다. 그때는 좀 어려웠었고 지금도 살짝 어렵긴 합니다. 그렇지만 책에 나온 몇몇 부분에 대하여는 실무를 하면서 고민을 하게 되니 책이 이해가 가는 부분이 많아지게 되었습니다. 예를 들어서 카프카를 통한 스트리밍, 분산 시스템을 위한 구현, 데이터를 큐브화 하여 사전에 질의를 위한 데이터 aggregatio...

가상 면접 사례로 배우는 대규모 시스템 설계 기초 후기

이미지
안녕하십니까. 기술 면접을 준비하기 위해서 가상 면접 사례로 배우는 대규모 시스템 설계 기초 라는 책을 읽게 되었습니다.  가능한 비용을 줄이기 위해서 근처에 있는 도서관에서 책을 빌렸습니다.  일반적인 면접에서 시스템 설계까지 물어보지는 않지만, 물어보는 면접을 할 수도 있기에 준비하였습니다.  책의 두께는 짧은 편입니다.  갓 주니어라면 내용이 어려울 수 있으나, 연차가 살짝 되면 어렵지 않고 빨리 읽히는 책입니다. 내용은 일반적인 시스템 설계에 대한 유투브나 책 등에서 볼수 있는 예시를 다룹니다. 위의 사진과 같은 검색어 자동완성 시스템도 널리 알려진 문제입니다.  페이스북 피드같은것도 알려진 문제로 인터뷰에서 자주 나올듯 합니다.  비슷한 유투브로는 code karle가 있습니다. 여기서는 영어 컨텐츠이며 각종 회사에 대한 예시 아키텍쳐를 다루고 있습니다. 제가 느낀 이책의 장점은 다음과 같습니다. 시스템 디자인에 대하여 인터뷰 형식으로 직접적으로 다룬책. 대부분의 시스템 디자인 유투브 칼럼은 영어권인점. 여기서는 한글로 다룸.  두께는 두껍지 않지만 내용이 알찬편.  이번에 시스템 디자인을 공부하면서 여러 자료를 보고 있지만 이 책을 통해서 많이 배우게 되었습니다. 

대용량 서비스 커뮤니티 스터디 - 1

이미지
이번 포스팅에서는 개인적으로 회사 동료 및 선배님들이랑 진행하고 있는 스터디에 대하여 다루려고 합니다. 스터디의 주 목적은 대용량 커뮤니티를 스터디 하면서 각자 배웠던것이라던가 구축하는 것들을 자료를 모아서 동영상을 만들자고 하던것이 목적입니다. 저 또한 이러한 목적에 도움이 되고 싶고, 개인 역량을 강화하고 싶은게 가장 큰 목적 입니다.  첫 2주간에 스터디에서 진행한 내용은 아래 슬라이드의 내용을 각자 한장씩 읽으면서 짧게 이야기를 나누는 것 입니다.  https://www.slideshare.net/cybaek/201403 안정적인 서비스 운영 위의 슬라이드는 nhn 회사에서 사내 교육용으로 쓰이고 있는 피피티라고 합니다. 주로 대용량 서비스를 다루면서 어떻게 최적화 튜닝을 하는지에 대하여 다루고 있습니다.  주요 내용들은 슬라이드에 있지만 저도 개인 공부를 위해서 블로그에 포스팅 해봅니다.  간단하게 흐름은.. 매우 간단한 웹사이트 구축 방법은 서버와 디비를 하나로 두는것. 여기에서 좀더 부하 분산을 위해서 서버를 2중화를 한다. 이중화 된 서버 앞에는 로드밸런싱을 하는 L7과 같은 물리적 장치를 둘 수 있다. 고가용성을 위해서 서버로 트래픽을 분배하지 않고, 장애가 발생되면 그때 바로 분배하는 방식이 있다. 서로 다른 서버간에 세션이 다르기 때문에 이는 문제가 된다. 예를 들어서 내가 로그인 한 정보가 다른 서버에서는 없기 때문에 갑자기 로그아웃 될수 가 있다. 따라서 이는 로드벨런싱에서 아이피는 같이 가게 하거나 공유 세션을 둘 수 있다. 빠르게 하려면 이를 메모리 디비로 활용 할 수 있다.   DSR 다이렉트 서버 리턴(Direct Server Return). 이 개념은 생소했다. 이는 파일 업로드 서버와 같이 대용량 데이터를 업로드 해야하는 경우, 로드벨런서 서버도 또한 해당 트래픽을 전부다 받게 된다. 이는 네트워크 상의 병목이 될 수 있다. 따라서 업로드를 해야하는 경우는 일단 업로드를 해야...

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을 통하여 제약을 주곤 합니다. 발표자는 그러한 어노테이션 보다는 아래 코드와 같이 해당 로직을 바깥으로 빼는것을 추천 하였습니다. ...