C++ - Hello C++!
C++ C++를 내가 처음 접한건 대학교 2학년때이다. 당시에 1학년때 C언어를 배우고 Row level 언어에 흠뻑 빠져있던 시절 C++은 객체 지향에 대한 인식을 심어준 첫번째 언어이다. 이후 Java를 좀 쓰다가 취직후 Javascript와 Python만 썼었는데 이후 대학원에 와서 DiskANN 분석을 위해 C++ 코드를 접하니까 하나도 기억이...
C++ C++를 내가 처음 접한건 대학교 2학년때이다. 당시에 1학년때 C언어를 배우고 Row level 언어에 흠뻑 빠져있던 시절 C++은 객체 지향에 대한 인식을 심어준 첫번째 언어이다. 이후 Java를 좀 쓰다가 취직후 Javascript와 Python만 썼었는데 이후 대학원에 와서 DiskANN 분석을 위해 C++ 코드를 접하니까 하나도 기억이...
Micro Service Architecture - 도메인 주도 설계(Domain-Driven Design) 1. 개요 도메인 주도 설계(DDD)는 소프트웨어를 실제 비즈니스 도메인(문제 영역)의 모델과 최대한 일치시키려는 설계 접근법이다. 대규모 개발 프로젝트를 처리하는데 좋은 방법이며, 프로젝트를 더 작은 도메인으로 나누고 이를 가지고 각 도메인...
Micro Service Architecture - API Gateway pattern 마이크로서비스 아키텍처에서 클라이언트와 백엔드 서비스 사이의 단일 진입점(single entry point)을 제공하는 패턴이다. (약간 이 부분은 공부하면서 그냥 Reverse proxy로 구성하면 API Gateway pattern이 아닌가 하는 생각은 들었다....
Architecture - Micro Service Architecture 이전에 회사에 다녔을 때 서비스를 운용하고 개발하는 방식은 모놀리딕 방식이었다. 지금 포스팅하고자하는 Micro Service 구조의 반대 방식이고 전통적인 방식이었는데, 여러가지 문제가 있었다. 그때의 기억을 되살려 이번에는 Micro service Architecture가 ...
Recovery - Checkpoint 1. 개요 전체 WAL에 대해서 복구를 시도하면 너무나 양이 많기 때문에 체크포인트를 찍어서 이후부터 작업할 수 있게 한다고 했다. 그리고 이 체크포인트를 만들기 위해서는 여러가지 방법이 있다. 2. Non-Fuzzy checkpoints 앞서 Loggin에서 설명했던 체크 포인트 방식이다. 새로운 ...
Recovery - ARIES 1. 개요 ARIES(Algorithms for Recovery and Isolation Exploiting Semantics)는 DB 복구를 위해 나온 알고리즘이다. 모든 시스템이 이 논문에서 정의한 대로 ARIES를 정확히 구현하는 것은 아니지만 대부분 비슷하게 구현되어있으며 이를 알게 되면 복구에 대해서 이해할 ...
Logging 1. 개요 DB에 어떤 값을 썼을 때 해당 값의 영속성이 보장되어야하는데 컴퓨터 시스템이라는게 여러가지 이유로 FAIL이 날 수 있다. 이 FAIL을 Crash라고 하고 Crash로 인해 일관성이 깨진 데이터를 복구 시키는걸 Recovery라고 한다. (사실 그냥 영어로 바꾼거긴하지만) 이 Recovery를 위한 알고리즘은 장애 발생...
Marching Cube 알고리즘 1. 개요 CT/MRI 스캔이나 부호 거리장 데이터와 같은 3차원 스칼라장에서 등위면의 다각형 메시(일반적으로 삼각형 메시)를 추출하는 데 사용되는 컴퓨터 그래픽 알고리즘이다. 2. 기본적인 아이디어 격자 무늬 판이 있다고 해보자. 어떤 모양을 Slice 하면 단면이 나온다. 이를 격자에 대치시키면 아래와 같다....
MVCC(Multi-Version Concurrency Control) 1. 개요 2 Phase Locking이나 Optimistic Concurrency Control과 같이 동시성 제어 프로토콜은 아니다. 되려 이는 여러버전을 유지하기 위해 동시에 트랜잭션이 실행되는 시스템 설계법에 가깝다. 각 데이터 항목의 여러버전을 유지함으로써 여러 트랜잭션...
Timestamp ordering 1. 개요 Lock 없이 Timestamp만을 가지고 직렬화를 판단하는 방식을 말한다. 여기서 Timestamp는 system clock이 될수도, 논리적카운터가 될수도 혹은 그 외의 방식으로 구현된 시간 순에 따라 생성되는 고유한 값이다 2. Basic Timestamp Ordering 각 트랜잭션의 Times...