목록분류 전체보기 (44)
디지안의 개발일지
이 글은 책을 보고 배운 내용을 요약합니다. 자세한 설명은 생략되어 있기 때문에 책을 직접 구입해서 보시길 바랍니다. 안정 해시 설계 수평적 규모 확장성(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 * (..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/sLdNi/btrvkHc0oxm/xvBYfiTGhSvOz0El1jlFiK/img.png)
이 글은 Kubernates 환경에서 분산 Jmeter 테스트를 어떻게 하는지에 대해서 설명합니다. 배경 API 서버에 대해서 스트레스 테스트를 하고 싶었다. 테스트 도구로써 Jmeter를 선정하였는데 로컬 컴퓨터에서 요청할 수 있는 갯수에 제한이 있다보니 여러 컴퓨터에서 요청할 수 있는 방법이 필요했다. 찾아보니 Jmeter에서는 원격 PC를 이용해서 테스트를 진행할 수 있는 기능이 있었다. 자세한 설명은 Jmeter 공식 홈페이지를 참고하길 바란다. 구성 테스트 구성은 다음과 같이 Master POD에서 Slave POD 로 테스트 요청을 보내면 Slave POD들이 테스트를 수행한다. 테스트 방법 Jmeter의 테스트 파일 저장 Jmeter를 통해서 테스트를 작성한다. 테스트 하는 방법은 블로그에서..
이 글은 이펙티브 코틀린 2장을 보면서 배운 것에 대해서 요약합니다. 코드 예제, 자세한 설명은 생략되어 있기 때문에 이펙티브 코틀린을 구입해서 보시는 것을 적극적으로 추천합니다. 코틀린에서 코드의 가독성이 좋다는 것은 코드가 간결하다는 것을 의미하는 것이 아니다. 사람이 이해할 수 있는 간결한 코드를 작성하는 것을 의미한다. 2장에서는 코틀린에서 프로그래머가 숨기거나 강조할 수 있는 기능에 대해 어떻게 활용하는지 소개한다. item 11 - 가독성을 목표로 설계하라. 코드는 작성할 때보다 읽을 때 더 많은 시간을 쓴다. 그렇기 때문에 다음과 같은 특징들을 고려해야한다. 인식 부하 감소 사람이 쉽게 이해할 수 있는 문법으로 작성하는 것이 좋다. 코틀린이 제공하는 간결한 문법보다 비 숙련자도 쉽게 이해할 ..
이 글은 책을 보고 배운 내용을 요약합니다. 자세한 설명은 생략되어 있기 때문에 책을 직접 구입해서 보시길 바랍니다. 사용자 수에 따른 규모 확장성 1장에서는 사용자가 많아짐에 따라 시스템을 어떻게 설계해야되는지, 그리고 어떤 지식이 필요한지에 대해서 소개한다. 단일 서버 모든 컴포넌트를 1개의 서버에서 실행할 때를 의미한다. 클라이언트가 요청을 보냈을 때, 서버로 어떻게 진입할 수 있는지 자세하게 설명해주지만 생략하도록 하겠다. 데이터베이스 분리(책 소제목은 데이터베이스) 사용자가 늘어나면 애플리케이션과 데이터베이스를 독립적으로 확장할 수 있게 하기 위해 두 서버를 나눠서 각각 운영한다. 이를 통해 트래픽 처리와 데이터베이스 조회 연산에 대한 리소스를 나눠서 처리할 수 있다. 여기서 규모가 더 커지려면..
이 글은 이펙티브 코틀린 1장을 보면서 배운 것에 대해서 요약합니다. 코드 예제, 자세한 설명은 생략되어 있기 때문에 이펙티브 코틀린을 구입해서 보시는 것을 적극적으로 추천합니다. 코틀린을 써야하는 주된 이유는 하나는 안정성이다. 코틀린이 제공해주는 기능들이 오류가 덜 발생하는 코드를 만드는데 많은 도움을 준다. item 1 - 가변성을 제한하라. 변수를 var 로 선언해서 가변적으로 사용하면 다음과 같은 어려움이 생긴다. 상태 변경에 따라 디버그가 힘들어진다. 코드의 실행 추론이 어렵다. 멀티스레드일 때 적절한 동기화가 필요하다. 변경이 많으면 모든 상태에 대해서 테스트 해야한다. 상태 변경에 따라 다른 곳에 알려줘야하는 경우가 있다. 코틀린에서 가변성 제한하기 읽기 전용 프로퍼티 사용 (val) 가변..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bvBv5W/btrb9HayE1b/9KikinXhbFNvW4z3CVdNw1/img.png)
이 글은 이펙티브 코틀린 책에 대한 소개를 합니다. 자세한 내용은 이펙티브 코틀린을 구입해서 보시는 것을 적극적으로 추천합니다. 책을 통해 알 수 있는 것 자바처럼 작성하던 코틀린 코드를 코틀린의 장점을 어떻게 살려서 작성할 수 있는지 알 수 있다. 코틀린의 철학 코틀린은 실용주의로 다음과 같은 특징을 가지고 있다. 안정성 가독성 재사용성 도구 친화성 다른 프로그래밍 언어와 상호 운용성 효율성 책의 목표 일반적인 문제, 좋은 패턴은 IDE를 통해 수정할 수 있기 때문에 경험에서 나온 모범사례들에 대해서 소개함. 책의 구성 책은 다음과 같이 3파트로 구성이 됨. 1부 : 좋은 코드 1장: 안정성 2장: 가독성 2부 : 코드 설계 3장: 재사용성 4장: 추상화 설계 5장: 객체 생성 6장: 클래스 설계 3부..