목록book (7)
디지안의 개발일지
[책] 도메인 주도 설계 철저 입문 이 글은 도메인 주도 설계 철저 입문을 소개한다. 특징 이 책을 읽으면서 느낀 것은 DDD에 사용되는 개념을 잘 정리해놔서 이해하기 쉽다는 것과 실제 코드로 어떻게 구현할 것인지를 예제로 잘 표현했다는 것이다. 그렇다보니 그 이전에는 약간 추상적으로 이해하고 있었던 개념들을 좀 더 명확하게 이해라 수 있었던 기회가 되었던 것 같다. 하지만 그에 비해서 현재 왜 DDD가 유행하게 되었는지, DDD의 역사등에 대한 설명은 설명을 해주지만 약간은 부족한 느낌이 들긴 하였다. 책 내용 1장 도메인 주도 설계란? DDD가 무엇인지에 대한 설명을 해준다. 책을 읽는 것에 대한 방향성을 제시해준다. 이 장에서 이런 이야기도 들어갔으면 좋겠다라는 생각이 들었다. DDD는 기존에는 소..
이 글은 책을 보고 배운 내용을 요약합니다. 자세한 설명은 생략되어 있기 때문에 책을 직접 구입해서 보시길 바랍니다. 안정 해시 설계 수평적 규모 확장성(scale out)을 하기 위해서는 요청이나 데이터를 각 서버에 균등하게 나눠야 한다. 그 방법으로 사용할 수 있는 일반적인 기술이 안정 해시다. 안정 해시에 대해서 다루기 전에 안정 해를 통해 해결하려고 하는 문제가 무엇인지부터 살펴보자. 해시 키 재배치 문제 N개의 서버가 존재할 때 이 서버들에 부하를 균등하게 나누는 일반적인 방법은 아래의 해시 함수를 사용하는 것이다. serverIndx = hash(key) % N 자세한 설명은 책을 참고하길 바란다. 요약하면 해시 함수를 사용해서 균등하게 분배하는 것은 다음과 같은 조건이 따라야 한다. 서버 풀..
이 글은 책을 보고 배운 내용을 요약합니다. 자세한 설명은 생략되어 있기 때문에 책을 직접 구입해서 보시길 바랍니다. 처리율 제한 장치의 설계 처리율 제한 장치란 서버로 들어오는 요청의 갯수를 제한하는 장치를 의미한다. 예를 들어 다음과 같은 상황을 만들 수 있다. 사용자는 초당 2회 이상 새 글을 올릴 수 없다. 같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다. 같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없다. 처리율 제한 장치는 다음과 같은 장점을 가진다. DDoS 공격을 방지할 수 있다. 비용적인면에서 활용할 수 있다. 우선 순위가 높은 API의 요청을 위해 자원을 사용할 수 있다. 과금을 통해 API 요청을 제한할 수 있다. 서버 과부하를 방지할 수 있다. 1단계 : 문..
이 글은 책을 보고 배운 내용을 요약합니다. 자세한 설명은 생략되어 있기 때문에 책을 직접 구입해서 보시길 바랍니다. 개략적인 규모 추정 개략적인 규모 추정이란 아래 두가지에 대해서 논리적으로 측정해보는 것을 의미한다. 시스템 용량 성능 요구사항 책에서는 여러가지 성능과 관련된 수치들을 설명해주고 어떻게 논리적으로 추정하는지에 대해서 설명해준다. 2의 제곱수 컴퓨터 공학에서 자주는 쓰는 단위에 대해서 설명해준다. 데이터 볼륨의 최소 단위는 Byte 고 1 Byte 는 8bit 에 해당한다. ASCII 문자 하나는 1 Byte 를 차지 한다. 그러면 메모리나 데이터베이스 등에서 문자에 따라 얼마나 용량을 차지할지 개략적으로 예상할 수 있을 것이다. 여기서 단위를 잘 이해하고 있어야 하는데 2의 10 * (..
이 글은 책을 보고 배운 내용을 요약합니다. 자세한 설명은 생략되어 있기 때문에 책을 직접 구입해서 보시길 바랍니다. 사용자 수에 따른 규모 확장성 1장에서는 사용자가 많아짐에 따라 시스템을 어떻게 설계해야되는지, 그리고 어떤 지식이 필요한지에 대해서 소개한다. 단일 서버 모든 컴포넌트를 1개의 서버에서 실행할 때를 의미한다. 클라이언트가 요청을 보냈을 때, 서버로 어떻게 진입할 수 있는지 자세하게 설명해주지만 생략하도록 하겠다. 데이터베이스 분리(책 소제목은 데이터베이스) 사용자가 늘어나면 애플리케이션과 데이터베이스를 독립적으로 확장할 수 있게 하기 위해 두 서버를 나눠서 각각 운영한다. 이를 통해 트래픽 처리와 데이터베이스 조회 연산에 대한 리소스를 나눠서 처리할 수 있다. 여기서 규모가 더 커지려면..
이 글은 이펙티브 코틀린 1장을 보면서 배운 것에 대해서 요약합니다. 코드 예제, 자세한 설명은 생략되어 있기 때문에 이펙티브 코틀린을 구입해서 보시는 것을 적극적으로 추천합니다. 코틀린을 써야하는 주된 이유는 하나는 안정성이다. 코틀린이 제공해주는 기능들이 오류가 덜 발생하는 코드를 만드는데 많은 도움을 준다. item 1 - 가변성을 제한하라. 변수를 var 로 선언해서 가변적으로 사용하면 다음과 같은 어려움이 생긴다. 상태 변경에 따라 디버그가 힘들어진다. 코드의 실행 추론이 어렵다. 멀티스레드일 때 적절한 동기화가 필요하다. 변경이 많으면 모든 상태에 대해서 테스트 해야한다. 상태 변경에 따라 다른 곳에 알려줘야하는 경우가 있다. 코틀린에서 가변성 제한하기 읽기 전용 프로퍼티 사용 (val) 가변..
들어가기 전에 조영호님의 책 객체지향의 사실과 오해을 읽으면서 중요하다고 생각되는 부분들을 정리하려고 한다. 제대로 이해하려면 책을 꼭 구매해서 봐야할 듯하다. 이 책의 목적 이 책은 객체지향 프로그래밍 고수를 만들기 위한 책은 아니다. 단지 객체 지향에 대한 시야를 지금까지 보지 못했던 방향으로 보게 해주는 책이라고 저자가 소개하고 있다. 더불어, 객체지향에 대한 기본적인 지식들을 배울 수 있는 책으로 보인다. 핵심은 객체지향에 대한 시각, 기본적인 지식을 배울 수 있는 책으로 추측이 된다. 협력하는 객체들의 공동체 객체들은 역할, 책임, 협력 이 세가지에 의해 구성이 된다. 예를 들어, 각 객체는 어떤 역할을 가지고 있고 그 역할에 따라 협력하는 관계에서 책임을 지게 된다. 여기서 재밌는 점은 아래와..