ohjongsung's Dev Story

Ohjongsung's Dev Story

CAP 이론과 PACELC 이론

CAP 이론은 분산 데이터베이스 시스템에서 의미있는 이론이다. 분산 데이터베이스의 세 가지 속성인 일관성(Consistency), 가용성(Availability), 네트워크 파티션 허용(Partition tolerance)을 나타낸다. 처음 CAP 이론이 발표된 후, 시간이 지나면서 이론의 허점이 발견되었고 이를 보완하는 PACELC 이론이 나오게 된다.

2019년 05월 01일

NoSQL에서 스키마 변경과 마이그레이션

NoSQL에서 스키마를 변경한 경우, 모든 문서를 건 바이 건으로 변경된 스키마를 반영한다고 생각해보자. 저장된 데이터의 양이 작다면 순식간에 끝날 것이다. 그러나 데이터의 양이 많아서 며칠이 걸린다면? 중간에 에러가 발생해서 중단되면? 스키마 마이그레이션 작업의 부하가 크다면 어떻게 해야 할까? 이 글을 통해서 NoSQL의 스키마 변경을 어떻게 반영하는지 알아보자.

2019년 03월 01일

Windows 10 Pro 에 Docker 와 Mysql 설치

윈도우 10 Pro에 도커를 설치하고 mysql 컨테이너를 뛰워보자. 먼저 알아둬야 하는 점은 윈도우 10 Home 이하 버전과 윈도우 10 Pro 이상, 즉 윈도우 서버와 같은 환경은 설치 방법이 다르다는 것이다. 그래서 자신의 윈도우 환경이 10 Home 이하인 경우, 이 글을 더 이상 읽지 말고, Docker Tool Box 설치 방법을 찾아 보길 바란다.

2018년 11월 25일

카우치베이스 다차원 스케일링 - Couchbase Multidimesional Scaling

보통 NoSQL이라고 하면 분산형 구조에 수평 확장에 용이하다고 하는데, 카우치베이스 또한 그렇다. 덕분에 부하 분산도 잘 되고 노드 장애에 대한 대처나 노드 추가도 쉽다. 그리고 memcached를 자체적으로 사용하고 있어서 캐시급 성능을 낸다.

2018년 10월 07일

REST API를 얼마나 나누고 묶을까? - REST API Granularity

해석하면 API 입도, 즉 API 를 얼마나 세밀하게 나눌 것이냐(Fine grained), 거칠게 묶을 것이냐(Coarse grained) 를 의미한다. Fine grained vs Coarse grained

2018년 09월 25일

엘라스틱 서치 재시작하기 - Rolling Restarts

엘라스틱 서치 버전 업그레이드 또는 서버 OS 나 하드웨어 업그레이드 등의 이유로 서비스를 중단해야할 경우가 생긴다. 하지만 무중단 서비스를 지향한다면 엘라스틱서치 클러스터 전체가 아닌 노드를 한 번에 하나씩 재시작해야 한다. 영어로 Rolling Restarts라고 하는데, 문제는 엘라스틱 서치는 데이터를 각 노드에 균등하게 배분하고 레플리카 또한 완전한 셋을 유지하고 싶어 한다는 것이다. 그래서 노드 하나가 셧다운되면, 클러스트는 그 상황을 즉시 인식하고 셧다운된 노드에 있는 프라이머리 샤드와 레플리카 샤드를 다른 노드로 옮기는 Reallocation, Rebalancing 작업이 시작된다.

2018년 08월 04일

REST API 성숙도 모델 - Maturity Model

지난 글에 이어서, 이번에는 Rechardson 의 API 성숙도 모델에 대해서 정리해 보겠다. 어떤 글에서는 6 단계로 나누기도 하는데, 원문의 모델은 4 단계로 나누어져서 각 단계를 달성할 수록 REST API에 가까워진다고 말한다.

2018년 07월 21일

REST API 기본 정리

REST API 에 관한 이론적인 내용을 체계적으로 하나둘씩 정리해보려고 한다. 이 글에선 REST API 의 기본적인 내용에 대해서 정리하겠다. API “defined methods of communication between various software components”

2018년 07월 07일

자바 캐스팅 - Java Casting

형변환이라 부르기도 하는 Casting은 기본형과 참조형에서 사용가능하다. 같은 종류의 변수끼리 Casting이 가능하고 기본형과 참조형 간의 Casting은 불가능하다. Casting은 단순히 데이터 형을 바꾸는 목적이 아니라, OOP의 특성인 다형성측면에서 활용한다.

2018년 05월 31일

Optional orElse 와 orElseGet 의 차이

Optional default value 를 사용할 때, 헷갈리는 orElse 와 orElseGet 의 차이점을 알아보자. 두 기능은 서로 매우 비슷해보이지만, 내부적으로 큰 차이점이 있다. 자바 문서를 보면 다음과 같다.

2018년 04월 20일

1 2 3 »