술(述)/비교 6

오케스트레이션 vs 코레오그래피

서비스 제어 방식 마이크로서비스는 하나의 거대한 서비스가 아니라 여러 개의 서비스를 두고, 이를 통해 사용자에게 필요한 기능을 제공하는 아키텍처이다. 서비스가 여러 개로 쪼개어졌으니, 사용자에게 기능을 제공하기 위해서는 서비스들이 서로 협력하여야 한다. 보통 두 가지 방법이 제시되며, 이는 아래와 같다. Orchestration Choreography Orchestration 중재자 서비스를 두고 여러 서비스를 조율하는 방법이다. 중재자 서비스는 사용자에게 기능을 제공하기 위해 어떤 서비스를 어떤 순서로 호출할지 알고 있어야 한다. 서비스 간의 커플링은 증가하지만, 개발자 관점에서 기능 자체를 이해하기 쉽다. Choreography 중재자 서비스 없이 서로가 알아서 소통하는 방법이다. 보통 서비스들은 이..

술(述)/비교 2022.01.20

natural key vs surrogate key

이 포스팅에서는 Primary Key가 무엇인지, 그리고 Primary Key를 지정하는 방법과 각 방법의 장단점에 대해서 살펴보겠다. Primary Key(기본 키) 데이터베이스는 엔티티(entity)를 구분하기 위해서 Primary Key를 지정한다. 이 Primary Key는 엔티티를 구분하기 때문에 몇 가지 특징을 갖는다. 특징은 아래와 같다. 유일해야 한다. NULL이 허용되지 않는다. 자동으로 색인이 된다. 이러한 Primary Key를 지정하는 방식은 두 가지가 있다. Natural Key(자연 키) Natural Key는 말 그대로 자연스러운 키이며, 유의미한 키이다. 키 자체가 가치가 있다. 누군가를 부를 때, 보통 이름을 부르게 되어있다. 만약, 이름이 겹치지만 않는다면 이름 자체가 훌..

술(述)/비교 2021.11.11

포인트 릴리즈 vs 롤링 릴리즈

운영체제(OS, Operating System)를 릴리즈(release)할 때, 아래와 같은 이름을 붙여서 릴리즈한다. Windows 8, 10, 11 Ubuntu 20.04.3, 20.10 Android 4.4 Kitkat, 5.0 Lollipop, 9 Pie 왜 굳이 8, 10과 같은 버전을 써서 릴리즈할까? 항상 최신 버전으로 릴리즈하면 안될까? 이 포스팅에서는 왜 그러는지, 다른 릴리즈 방법은 무엇인지 관한 내용을 다루겠다. 릴리즈 릴리즈는 "풀어주다", "놓아주다", "공개하다", "발표하다"라는 뜻이 있다. 사실 릴리즈라고 읽고 쓰기는 하지만, 릴리스라고 발음하는 게 맞다. 하지만, 많이 쓰는 게 깡패라고, 릴리즈도 통용된다. OS를 릴리즈하는 방식은 당연하게도, 해당 OS를 판매하는 곳에서 ..

술(述)/비교 2021.10.17

status vs state

"status"와 "state"는 직역하면 "상태"이다. 그렇지만, 이 둘은 엄연히 구분되어 사용된다. Status status는 어떤 연산 결과이다. 연산 결괏값을 말하는 게 아니다. 어디까지나 status도 상태이다. 대표적인 예로 HTTP Status Code가 있다. 200 OK 404 Not Found 위와 같이 어떠한 연산의 결과 상태가 status이다. State state는 어떤 연산의 수행 과정이다. "어떤 일을 하는 중"이라고 하면 모두 state이다. "~하는 중"이라고 표현되지 않더라도, 수행 과정이라면 state이다. 예시 - 수학 문제 어떤 수학 문제가 있다. 수학 문제를 푸는 중이면? state! 수학 문제를 다 풀었다면? state! 위는 언뜻 보기에 수학 문제를 다 풀었다는..

술(述)/비교 2021.08.05

명시적 API vs 묵시적 API

Vulkan에 관해 공부를 시작했다. 여기에서 처음 보는 용어(Explicit API)가 등장해 이에 대해 정리한다. 명시적(explicit) API 내가 시킨 일 이외에는 하지 않는 것을 명시적 API라고 한다. 예를 들어, 술을 사 와라! 라는 명령을 내렸을 때, 정말 술만 사 오면 명시적인 API이다. 묵시적(implicit) API API를 호출할 때마다 혹은 주기적으로, API를 지원하는 드라이버 혹은 플랫폼에서 내가 시킨 일 이외의 것들을 알아서 수행하는 것을 묵시적 API라고 한다. 예를 들어, 술을 사 와라! 라는 명령을 내렸을 때, 술뿐 아니라 간식도 알아서 사 온다면 묵시적인 API이다. 개인적인 감상 마치 Java 언어와 C 언어 같다는 생각이 든다. 메모리 관리 측면에서 C언어는 사..

술(述)/비교 2021.06.19

정적(Statically) vs 동적(Dynamically) 타입 언어

용어 설명 정적 변하지 않는다. 동적 변한다. 타입 변수의 데이터 타입을 통틀어 이른다. 정적 데이터 타입 변수의 한번 정해진 데이터 타입은 변하지 않음을 말한다. 대표적으로 C언어가 정적 데이터 타입 언어이다. 아래와 같이 코드를 작성하면 에러가 발생한다. { int some = 157; some = "string" } 동적 데이터 타입 변수의 데이터 타입은 변할 수 있음을 말한다. 대표적으로 Python언어가 동적 데이터 타입 언어이다. 아래와 같이 코드를 작성해도 에러가 발생하지 않는다. value :int = 123 value = "string"

술(述)/비교 2021.06.13