diff --git a/translations/README-kr.md b/translations/README-kr.md
new file mode 100644
index 0000000..782c1fa
--- /dev/null
+++ b/translations/README-kr.md
@@ -0,0 +1,1739 @@
+
+
+
+
+
+ ใ
+
+ ๐จ๐ปโ๐ป YouTube
+ |
+
+ ๐ฎ Newsletter
+ ใ
+
+
+
+
+# System Design 101
+
+์๊ฐ ์๋ฃ์ ๊ฐ๋จํ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์์คํ
์ ์ค๋ช
ํฉ๋๋ค.
+
+์์คํ
๋์์ธ ๋ฉด์ ์ ์ค๋น ์ค์ด๊ฑฐ๋ ๋จ์ํ ์์คํ
์ด ํ๋ฉด ์๋์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ๊ณ ์ถ์ผ์ ๋ถ์ด๋ผ๋ฉด ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค.
+
+# ๋ชฉ์ฐจ
+
+
+
+- [Communication protocols](#communication-protocols)
+ - [REST API vs GraphQL](#rest-api-vs-graphql)
+ - [gRPC๋ ์ด๋ป๊ฒ ์๋ํ๋์?](#grpc๋-์ด๋ป๊ฒ-์๋ํ๋์)
+ - [webhook์ด๋ ๋ฌด์์ธ๊ฐ์?](#webhook์ด๋-๋ฌด์์ธ๊ฐ์)
+ - [API ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?](#api-์ฑ๋ฅ์-๊ฐ์ ํ๋-๋ฐฉ๋ฒ์-๋ฌด์์ธ๊ฐ์)
+ - [HTTP 1.0 -\> HTTP 1.1 -\> HTTP 2.0 -\> HTTP 3.0 (QUIC)](#http-10---http-11---http-20---http-30-quic)
+ - [SOAP vs REST vs GraphQL vs RPC](#soap-vs-rest-vs-graphql-vs-rpc)
+ - [Code First vs API First](#code-first-vs-api-first)
+ - [HTTP status codes](#http-status-codes)
+ - [API gateway๋ ๋ฌด์์ ํ๋์?](#api-gateway๋-๋ฌด์์-ํ๋์)
+ - [ํจ๊ณผ์ ์ด๊ณ ์์ ํ API๋ฅผ ์ค๊ณํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?](#ํจ๊ณผ์ ์ด๊ณ -์์ ํ-api๋ฅผ-์ค๊ณํ๋ ค๋ฉด-์ด๋ป๊ฒ-ํด์ผ-ํ ๊น์)
+ - [TCP/IP encapsulation](#tcpip-encapsulation)
+ - [์ Nginx๋ฅผ "reverse" ํ๋ก์๋ผ๊ณ ๋ถ๋ฅด๋์?](#์-nginx๋ฅผ-reverse-ํ๋ก์๋ผ๊ณ -๋ถ๋ฅด๋์)
+ - [์ผ๋ฐ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌด์์ธ๊ฐ์?](#์ผ๋ฐ์ ์ธ-๋ก๋-๋ฐธ๋ฐ์ฑ-์๊ณ ๋ฆฌ์ฆ์-๋ฌด์์ธ๊ฐ์)
+ - [URL, URI, URN - ์ฐจ์ด๋ฅผ ์๊ณ ์๋์?](#url-uri-urn---์ฐจ์ด๋ฅผ-์๊ณ -์๋์)
+- [CI/CD](#cicd)
+ - [์ฌ์ด ์ฉ์ด๋ก ์ค๋ช
ํ๋ CI/CD ํ์ดํ๋ผ์ธ](#์ฌ์ด-์ฉ์ด๋ก-์ค๋ช
ํ๋-cicd-ํ์ดํ๋ผ์ธ)
+ - [๋ทํ๋ฆญ์ค ๊ธฐ์ ์คํ (CI/CD Pipeline)](#๋ทํ๋ฆญ์ค-๊ธฐ์ ์คํ-cicd-pipeline)
+- [์ํคํ
์ฒ ํจํด](#์ํคํ
์ฒ-ํจํด)
+ - [MVC, MVP, MVVM, MVVM-C, VIPER](#mvc-mvp-mvvm-mvvm-c-and-viper)
+ - [๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์์์ผ ํ 18๊ฐ์ง ํต์ฌ ๋์์ธ ํจํด](#๋ชจ๋ -๊ฐ๋ฐ์๊ฐ-์์์ผ-ํ -18๊ฐ์ง-ํต์ฌ-๋์์ธ-ํจํด)
+- [๋ฐ์ดํฐ๋ฒ ์ด์ค](#๋ฐ์ดํฐ๋ฒ ์ด์ค)
+ - [ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ์นํธ์ํธ](#ํด๋ผ์ฐ๋-์๋น์ค์-๋ค์ํ-๋ฐ์ดํฐ๋ฒ ์ด์ค์-๊ดํ-์นํธ์ํธ)
+ - [๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐํํ๋ 8๊ฐ์ง ๋ฐ์ดํฐ ๊ตฌ์กฐ](#๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ-๊ฐํํ๋-8๊ฐ์ง-๋ฐ์ดํฐ-๊ตฌ์กฐ)
+ - [๋ฐ์ดํฐ๋ฒ ์ด์ค์์ SQL ๋ฌธ์ ์ด๋ป๊ฒ ์คํ๋๋์?](#๋ฐ์ดํฐ๋ฒ ์ด์ค์์-SQL-๋ฌธ์-์ด๋ป๊ฒ-์คํ๋๋์)
+ - [CAP ์ ๋ฆฌ](#cap-์ ๋ฆฌ)
+ - [๋ฉ๋ชจ๋ฆฌ ๋ฐ ์คํ ๋ฆฌ์ง์ ์ข
๋ฅ](#๋ฉ๋ชจ๋ฆฌ-๋ฐ-์คํ ๋ฆฌ์ง์-์ข
๋ฅ)
+ - [SQL ์ฟผ๋ฆฌ ์๊ฐํ](#SQL-์ฟผ๋ฆฌ-์๊ฐํ)
+ - [SQL ์ธ์ด](#sql-์ธ์ด)
+- [์บ์](#์บ์)
+ - [๋ฐ์ดํฐ๋ ์ด๋์๋ ์บ์๋ฉ๋๋ค](#๋ฐ์ดํฐ๋-์ด๋์๋-์บ์๋ฉ๋๋ค)
+ - [Redis๋ ์ ๋น ๋ฅธ๊ฐ์?](#redis๋-์-๋น ๋ฅธ๊ฐ์)
+ - [Redis๋ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?](#redis๋-์ด๋ป๊ฒ-์ฌ์ฉํ๋์)
+ - [์ฃผ์ ์บ์ฑ ์ ๋ต](#์ฃผ์-์บ์ฑ-์ ๋ต)
+- [๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ](#๋ง์ดํฌ๋ก์๋น์ค-์ํคํ
์ฒ)
+ - [์ผ๋ฐ์ ์ธ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ ์ด๋ค ๋ชจ์ต์ผ๊น์?](#์ผ๋ฐ์ ์ธ-๋ง์ดํฌ๋ก์๋น์ค-์ํคํ
์ฒ๋-์ด๋ค-๋ชจ์ต์ผ๊น์)
+ - [๋ง์ดํฌ๋ก์๋น์ค ๋ชจ๋ฒ ์ฌ๋ก](#๋ง์ดํฌ๋ก์๋น์ค-๋ชจ๋ฒ์ฌ๋ก)
+ - [๋ง์ดํฌ๋ก์๋น์ค์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์คํ์ ๋ฌด์์ธ๊ฐ์?](#๋ง์ดํฌ๋ก์๋น์ค์-์ผ๋ฐ์ ์ผ๋ก-์ฌ์ฉํ๋-๊ธฐ์ -์คํ์-๋ฌด์์ธ๊ฐ์)
+ - [์นดํ์นด๊ฐ ๋น ๋ฅธ ์ด์ ](#์นดํ์นด๊ฐ-๋น ๋ฅธ-์ด์ )
+- [๊ฒฐ์ ์์คํ
](#๊ฒฐ์ -์์คํ
)
+ - [๊ฒฐ์ ์์คํ
์ ์ด๋ป๊ฒ ๋ฐฐ์ฐ๋์?](#๊ฒฐ์ -์์คํ
์-์ด๋ป๊ฒ-๋ฐฐ์ฐ๋์)
+ - [์ ์ฉ์นด๋๋ฅผ "์ํ์์ ๊ฐ์ฅ ์์ต์ฑ์ด ๋์ ์ํ"์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? ๋น์/๋ง์คํฐ์นด๋๋ ์ด๋ป๊ฒ ์์ต์ ์ฐฝ์ถํ๋์?](#์ ์ฉ์นด๋๋ฅผ-์ํ์์-๊ฐ์ฅ-์์ต์ฑ์ด-๋์-์ํ์ด๋ผ๊ณ -๋ถ๋ฅด๋-์ด์ ๋-๋ฌด์์ธ๊ฐ์-๋น์๋ง์คํฐ์นด๋๋-์ด๋ป๊ฒ-์์ต์-์ฐฝ์ถํ๋์)
+ - [์์ ์์ ์ฐ๋ฆฌ๊ฐ ์ ์ฉ์นด๋๋ฅผ ๊ธ์ ๋, VISA๋ ์ด๋ป๊ฒ ์๋ํ๋์?](#์์ ์์-์ฐ๋ฆฌ๊ฐ-์ ์ฉ์นด๋๋ฅผ-๊ธ์-๋-visa๋-์ด๋ป๊ฒ-์๋ํ๋์)
+ - [์ธ๊ณ์ ๊ฒฐ์ ์์คํ
์๋ฆฌ์ฆ(1๋ถ): ์ธ๋์ ํตํฉ ๊ฒฐ์ ์ธํฐํ์ด์ค(UPI)](#์ธ๊ณ์-๊ฒฐ์ -์์คํ
-์๋ฆฌ์ฆ1๋ถ-์ธ๋์-ํตํฉ-๊ฒฐ์ -์ธํฐํ์ด์คupi)
+- [DevOps](#devops)
+ - [DevOps vs SRE vs Platform Engineering ๋ฌด์์ด ๋ค๋ฅธ๊ฐ์?](#devops-vs-sre-vs-platform-engineering-๋ฌด์์ด-๋ค๋ฅธ๊ฐ์)
+ - [k8s(Kubernetes)๋ ๋ฌด์์ธ๊ฐ์?](#k8skubernetes๋-๋ฌด์์ธ๊ฐ์)
+ - [Docker vs Kubernetes. ์ด๋ค๊ฒ์ ์ฌ์ฉํด์ผ ํ๋์?](#docker-vs-kubernetes-์ด๋ค๊ฒ์-์ฌ์ฉํด์ผ-ํ๋์)
+ - [Docker๋ ์ด๋ป๊ฒ ์๋ํ๋์?](#docker๋-์ด๋ป๊ฒ-์๋ํ๋์)
+- [GIT](#git)
+ - [Git Commands ์๋ ๋ฐฉ์](#git-commands-์๋-๋ฐฉ์)
+ - [Git์ ์ด๋ป๊ฒ ์๋ํ๋์?](#git์-์ด๋ป๊ฒ-์๋ํ๋์)
+ - [Git merge vs Git rebase](#git-merge-vs-git-rebase)
+- [ํด๋ผ์ฐ๋ ์๋น์ค](#ํด๋ผ์ฐ๋-์๋น์ค)
+ - [๋ค์ํ ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ํ ์ ์ฉํ ์นํธ์ํธ(2023๋
ํ)](#๋ค์ํ-ํด๋ผ์ฐ๋-์๋น์ค์-๋ํ-์ ์ฉํ-์นํธ์ํธ2023๋
ํ)
+ - [cloud native๋ ๋ฌด์์ธ๊ฐ์?](#cloud-native๋-๋ฌด์์ธ๊ฐ์)
+- [๊ฐ๋ฐ์ ์์ฐ์ฑ ๋๊ตฌ](#๊ฐ๋ฐ์-์์ฐ์ฑ-๋๊ตฌ)
+ - [JSON ํ์ผ ์๊ฐํ](#json-ํ์ผ-์๊ฐํ)
+ - [์ฝ๋๋ฅผ ์ํคํ
์ฒ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ์๋ ๋ณํ](#์ฝ๋๋ฅผ-์ํคํ
์ฒ-๋ค์ด์ด๊ทธ๋จ์ผ๋ก-์๋-๋ณํ)
+- [๋ฆฌ๋
์ค](#๋ฆฌ๋
์ค)
+ - [๋ฆฌ๋
์ค ํ์ผ ์์คํ
์ค๋ช
](#๋ฆฌ๋
์ค-ํ์ผ-์์คํ
-์ค๋ช
)
+ - [๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ 18๊ฐ์ง ๋ฆฌ๋
์ค ์ปค๋งจ๋ ์์๋ณด๊ธฐ](#๊ฐ์ฅ-๋ง์ด-์ฌ์ฉ๋๋-18๊ฐ์ง-๋ฆฌ๋
์ค-์ปค๋งจ๋-์์๋ณด๊ธฐ)
+- [๋ณด์](#๋ณด์)
+ - [HTTPS๋ ์ด๋ป๊ฒ ์๋ํ๋์?](#https๋-์ด๋ป๊ฒ-์๋ํ๋์)
+ - [๊ฐ๋จํ ์ฉ์ด๋ก ์ค๋ช
ํ๋ Oauth 2.0](#๊ฐ๋จํ-์ฉ์ด๋ก-์ค๋ช
ํ๋-oauth-20)
+ - [์ธ์ฆ ๋ฉ์ปค๋์ฆ์ 4๊ฐ์ง ์ฃผ์ ํํ](#์ธ์ฆ-๋ฉ์ปค๋์ฆ์-4๊ฐ์ง-์ฃผ์-ํํ)
+ - [Session, cookie, JWT, token, SSO, OAuth 2.0 - ๊ทธ๊ฒ ๋ญ๊ฐ์?](#session-cookie-jwt-token-sso-oauth-20---๊ทธ๊ฒ-๋ญ๊ฐ์)
+ - [๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๋ ๋ฐฉ๋ฒ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?](#๋ฐ์ดํฐ๋ฒ ์ด์ค์-๋น๋ฐ๋ฒํธ๋ฅผ-์์ ํ๊ฒ-์ ์ฅํ๋-๋ฐฉ๋ฒ๊ณผ-๋น๋ฐ๋ฒํธ๋ฅผ-ํ์ธํ๋-๋ฐฉ๋ฒ์-๋ฌด์์ธ๊ฐ์)
+ - [10์ธ ์ด๋ฆฐ์ด์๊ฒ JSON Web Token(JWT) ์ค๋ช
ํ๊ธฐ](#10์ธ-์ด๋ฆฐ์ด์๊ฒ-json-web-tokenjwt-์ค๋ช
ํ๊ธฐ)
+ - [Google authenticator(๋๋ ๋ค๋ฅธ ์ ํ์ 2 factor authenticator)๋ ์ด๋ป๊ฒ ์๋ํ๋์?](#google-authenticator๋๋-๋ค๋ฅธ-์ ํ์-2-factor-authenticator๋-์ด๋ป๊ฒ-์๋ํ๋์)
+- [์ค์ ์ฌ๋ก ์ฐ๊ตฌ](#์ค์ -์ฌ๋ก-์ฐ๊ตฌ)
+ - [๋ทํ๋ฆญ์ค ๊ธฐ์ ์คํ](#๋ทํ๋ฆญ์ค-๊ธฐ์ -์คํ)
+ - [ํธ์ํฐ ์ํคํ
์ฒ 2022](#ํธ์ํฐ-์ํคํ
์ฒ-2022)
+ - [์ง๋ 15๋
๊ฐ ์์ด๋น์ค๋น ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์ ์งํ ๊ณผ์ ](#์ง๋-15๋
๊ฐ-์์ด๋น์ค๋น-๋ง์ดํฌ๋ก์๋น์ค-์ํคํ
์ฒ์-์งํ-๊ณผ์ )
+ - [๋ชจ๋
ธ๋ ํฌ vs ๋ง์ดํฌ๋ก๋ ํฌ](#๋ชจ๋
ธ๋ ํฌ-vs-๋ง์ดํฌ๋ก๋ ํฌ)
+ - [์คํ ์ค๋ฒํ๋ก ์น์ฌ์ดํธ๋ฅผ ์ด๋ป๊ฒ ๋์์ธํ ๊ฑด๊ฐ์?](#์คํ-์ค๋ฒํ๋ก-์น์ฌ์ดํธ๋ฅผ-์ด๋ป๊ฒ-๋์์ธํ -๊ฑด๊ฐ์)
+ - [์๋ง์กด ํ๋ผ์ ๋น๋์ค ๋ชจ๋ํฐ๋ง์ด ์๋ฒ๋ฆฌ์ค์์ ๋ชจ๋๋ฆฌ์์ผ๋ก ์ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? ์ด๋ป๊ฒ 90%์ ๋น์ฉ์ ์ ๊ฐํ ์ ์์๊น์?](#์๋ง์กด-ํ๋ผ์-๋น๋์ค-๋ชจ๋ํฐ๋ง์ด-์๋ฒ๋ฆฌ์ค์์-๋ชจ๋๋ฆฌ์์ผ๋ก-์ ํ๋-์ด์ ๋-๋ฌด์์ธ๊ฐ์-์ด๋ป๊ฒ-90์-๋น์ฉ์-์ ๊ฐํ -์-์์๊น์)
+ - [๋์ฆ๋ ํซ์คํ๋ ์ด๋ป๊ฒ ํ ๋๋จผํธ ๊ธฐ๊ฐ ๋์ 50์ต ๊ฐ์ ์ด๋ชจํฐ์ฝ์ ํ๋ํ ์ ์์๋์?](#๋์ฆ๋-ํซ์คํ๋-์ด๋ป๊ฒ-ํ ๋๋จผํธ-๊ธฐ๊ฐ-๋์-50์ต-๊ฐ์-์ด๋ชจํฐ์ฝ์-ํ๋ํ -์-์์๋์)
+ - [Discord๊ฐ ์์กฐ ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ](#discord๊ฐ-์์กฐ-๊ฐ์-๋ฉ์์ง๋ฅผ-์ ์ฅํ๋-๋ฐฉ๋ฒ)
+ - [๋์์ ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ์ YouTube, TikTok ๋ผ์ด๋ธ, Twitch์์ ์ด๋ป๊ฒ ์๋ํ๋์?](#๋์์-๋ผ์ด๋ธ-์คํธ๋ฆฌ๋ฐ์-youtube-tiktok-๋ผ์ด๋ธ-twitch์์-์ด๋ป๊ฒ-์๋ํ๋์)
+
+
+
+## Communication protocols
+
+์ํคํ
์ฒ ์คํ์ผ์ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค(API)์ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๊ฐ ์๋ก ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ ์ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก API๋ฅผ ์ค๊ณํ๊ณ ๊ตฌ์ถํ๋ ํ์ค ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํจ์ผ๋ก์จ ํจ์จ์ฑ, ์์ ์ฑ, ๋ค๋ฅธ ์์คํ
๊ณผ์ ์ฌ์ด ํตํฉ์ ๋ณด์ฅํฉ๋๋ค. ๋ค์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์คํ์ผ์
๋๋ค.
+
+
+
+
+
+- SOAP:ย
+
+ ์ฑ์ํ๊ณ , ํฌ๊ด์ ์ด๊ณ , XML ๊ธฐ๋ฐ
+
+ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ์ฅ ์ ํฉ
+
+- RESTful:ย
+
+ ์ธ๊ธฐ์๊ณ , ๊ตฌํํ๊ธฐ ์ฝ๊ณ , HTTP methodsย
+
+ ์น ์๋น์ค์ ์ด์์ ย
+
+- GraphQL:ย
+
+ ์ฟผ๋ฆฌ ์ธ์ด, ํน์ ๋ฐ์ดํฐ ์์ฒญย
+
+ ๋คํธ์ํฌ ์ค๋ฒํค๋ ๊ฐ์, ๋น ๋ฅธ ์๋ต
+
+- gRPC:ย
+
+ Modern, high-performance, Protocol Buffersย
+
+ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์ ์ ํฉ
+
+- WebSocket:ย
+
+ ์ค์๊ฐ, ์๋ฐฉํฅ, ์ง์์ ์ธ ์ฐ๊ฒฐ
+
+ ์ง์ฐ ์๊ฐ์ด ์งง์ ๋ฐ์ดํฐ์ ์ ํฉ
+
+- Webhook:ย
+
+ ์ด๋ฒคํธ ๊ธฐ๋ฐ, HTTP ์ฝ๋ฐฑ, ๋น๋๊ธฐ์ย
+
+ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์์คํ
์ ์๋ฆผ
+
+
+### REST API vs GraphQL
+
+API ์ค๊ณ์ ์์ด์ REST์ GraphQL์ ๊ณ ์ ์ ์ฅ๋จ์ ์ด ์์ต๋๋ค.
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ REST์ GraphQL์ ๊ฐ๋ตํ๊ฒ ๋น๊ตํ ๊ฒ์
๋๋ค.
+
+
+
+
+
+REST
+
+- CRUD ์์
์ GET, POST, PUT, DELETE์ ๊ฐ์ ํ์ค HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+- ์๋ก ๋ค๋ฅธ ์๋น์ค/์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ ๊ฐ๋จํ๊ณ ๊ท ์ผํ ์ธํฐํ์ด์ค๊ฐ ํ์ํ ๋ ํจ๊ณผ์ ์
๋๋ค.
+- ์บ์ฑ ์ ๋ต์ ๊ตฌํ์ด ๊ฐ๋จํฉ๋๋ค.
+- ๋จ์ ์ผ๋ก ๋ณ๋์ ์๋ํฌ์ธํธ์์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฒ์ ์๋ณต์ด ํ์ํ ์ ์์ต๋๋ค.
+
+GraphQL
+
+- ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ฒ ์ฟผ๋ฆฌํ ์ ์๋ ๋จ์ผ ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
+- ํด๋ผ์ด์ธํธ๊ฐ ์ค์ฒฉ ์ฟผ๋ฆฌ์ ํ์ํ ์ ํํ ํ๋๋ฅผ ์ง์ ํ๋ฉด ์๋ฒ๋ ํด๋น ํ๋๋ง ํฌํจํ ์ต์ ํ๋ ํ์ด๋ก๋๋ฅผ ๋ฐํํฉ๋๋ค.
+- ๋ฐ์ดํฐ ์์ ์ ์ํ ๋ฎคํ
์ด์
๊ณผ ์ค์๊ฐ ์๋ฆผ์ ์ํ ๊ตฌ๋
์ ์ง์ํฉ๋๋ค.
+- ์ฌ๋ฌ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋๋ฐ ์ ํฉํ๋ฉฐ ๋น ๋ฅด๊ฒ ์งํํ๋ ํ๋ก ํธ์๋ ์๊ตฌ์ฌํญ์ ์ ๋ง์ต๋๋ค.
+- ํ์ง๋ง ๋ณต์ก์ฑ์ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ ๊ฐํ๋ฉฐ, ์ ๋๋ก ๋ณดํธํ์ง ์์ผ๋ฉด ์
์์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
+- ์บ์ฑ ์ ๋ต์ REST๋ณด๋ค ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
+
+์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ฐ๋ฐํ์ ๊ตฌ์ฒด์ ์ธ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ REST์ GraphQL ์ค ์ ํฉํ ๊ฒ์ ์ ํํด์ผ ํฉ๋๋ค. GraphQL์ ๋ณต์กํ๊ฑฐ๋ ์์ฃผ ๋ณ๊ฒฝ๋๋ ํ๋ก ํธ์๋ ์๊ตฌ์ฌํญ์ ์ ํฉํ๋ฉฐ, REST๋ ๋จ์ํ๊ณ ์ผ๊ด๋ ๊ณ์ฝ์ด ์ ํธ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํฉํฉ๋๋ค.
+
+๋ API ๋ฐฉ์ ๋ชจ๋ ์์ด์์ ์๋๋๋ค. ์ฌ๋ฐ๋ฅธ ์คํ์ผ์ ์ ํํ๋ ค๋ฉด ์๊ตฌ ์ฌํญ๊ณผ ์ฅ๋จ์ ์ ์ ์คํ๊ฒ ๊ฒํ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. REST์ GraphQL์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋
ธ์ถํ๊ณ ์ต์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ๋ํ๋ ๋ฐ ์ ํจํ ์ต์
์
๋๋ค.
+
+
+### gRPC๋ ์ด๋ป๊ฒ ์๋ํ๋์?
+
+RPC(Remote Procedure Call)๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์์ ์๋น์ค๊ฐ ์๋ก ๋ค๋ฅธ ์๋ฒ์ ๋ฐฐํฌ๋ ๋ ์๊ฒฉ ์๋น์ค ๊ฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ๋๋ฌธ์ "**remote**"๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค. ์ฌ์ฉ์ ์
์ฅ์์๋ ๋ก์ปฌ ํจ์ ํธ์ถ์ฒ๋ผ ์๋ํฉ๋๋ค.
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ **gRPC**์ ์ ์ฒด ๋ฐ์ดํฐ ํ๋ก์ฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+1๋จ๊ณ: ํด๋ผ์ด์ธํธ์์ REST ํธ์ถ์ ์ํํฉ๋๋ค. request body๋ ์ผ๋ฐ์ ์ผ๋ก JSON ํฌ๋งท์
๋๋ค.
+
+2-4๋จ๊ณ: ์ฃผ๋ฌธ ์๋น์ค(gRPC ํด๋ผ์ด์ธํธ)๊ฐ REST ํธ์ถ์ ์์ ํ์ฌ ๋ณํํ ํ ๊ฒฐ์ ์๋น์ค์ RPC ํธ์ถ์ ํฉ๋๋ค. gRPC๋ **client stub**์ ๋ฐ์ด๋๋ฆฌ๋ก ์ธ์ฝ๋ฉํ์ฌ ๋ก์ฐ๋ ๋ฒจ ์ ์ก ๊ณ์ธต์ผ๋ก ๋ณด๋
๋๋ค.
+
+5๋จ๊ณ: gRPC๊ฐ HTTP2๋ฅผ ํตํด ํจํท์ ์ ์กํฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ ์ธ์ฝ๋ฉ๊ณผ ๋คํธ์ํฌ ์ต์ ํ๋ก ์ธํด gRPC๋ JSON๋ณด๋ค 5๋ฐฐ ๋น ๋ฅด๋ค๊ณ ํฉ๋๋ค.
+
+6-8๋จ๊ณ: ๊ฒฐ์ ์๋น์ค(gRPC ์๋ฒ)๊ฐ ๋คํธ์ํฌ์์ ํจํท์ ์์ ํ๊ณ , ์ด๋ฅผ ๋์ฝ๋ฉํ ํ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ํธ์ถํฉ๋๋ค.
+
+9-11๋จ๊ณ: ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ณ ์ธ์ฝ๋ฉํ์ฌ ์ ์ก ๊ณ์ธต์ผ๋ก ์ ์กํฉ๋๋ค.
+
+12-14๋จ๊ณ: ์ฃผ๋ฌธ ์๋น์ค๊ฐ ํจํท์ ์์ ํ์ฌ ๋์ฝ๋ฉํ ํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณด๋
๋๋ค.
+
+### webhook์ด๋ ๋ฌด์์ธ๊ฐ์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ํด๋ง๊ณผ ์นํ
์ ๋น๊ตํ ๊ฒ์
๋๋ค.
+
+
+
+
+
+์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ๋ฅผ ์ด์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ API ๊ฒ์ดํธ์จ์ด๋ฅผ ํตํด ์ฃผ๋ฌธ ์๋น์ค๋ก ์ฃผ๋ฌธ์ ๋ณด๋ด๋ฉด, ์ฃผ๋ฌธ ์๋น์ค๋ ๊ฒฐ์ ํธ๋์ญ์
์ ์ํด ๊ฒฐ์ ์๋น์ค๋ก ์ด๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฒฐ์ ์๋น์ค๋ ์ธ๋ถ ๊ฒฐ์ ์๋น์ค ๊ณต๊ธ์
์ฒด(PSP)์ ํต์ ํ์ฌ ํธ๋์ญ์
์ ์๋ฃํฉ๋๋ค.
+
+์ธ๋ถ PSP์์ ํต์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
+
+**1. ์ ํด๋ง Short polling**ย
+
+๊ฒฐ์ ์์ฒญ์ PSP์ ์ ์กํ ํ ๊ฒฐ์ ์๋น์ค์์ PSP์ ๊ฒฐ์ ์ํ๋ฅผ ๊ณ์ ๋ฌป์ต๋๋ค. ๋ช ๋ฒ์ ๋ผ์ด๋๊ฐ ๋๋๋ฉด PSP๋ ๋ง์นจ๋ด ์ํ๋ฅผ ๋ฐํํฉ๋๋ค.ย
+
+์ ํด๋ง์๋ ๋ ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค.
+- ์ํ๋ฅผ ์ง์์ ์ผ๋ก ํด๋งํ๋ ค๋ฉด ๊ฒฐ์ ์๋น์ค์ ๋ฆฌ์์ค๊ฐ ํ์ํฉ๋๋ค.
+- ์ธ๋ถ ์๋น์ค๊ฐ ๊ฒฐ์ ์๋น์ค์ ์ง์ ํต์ ํ๋ฏ๋ก ๋ณด์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
+
+**2. ์นํ
Webhook**ย
+
+์ธ๋ถ ์๋น์ค์ ์นํ
์ ๋ฑ๋กํ ์ ์์ต๋๋ค. ์ฆ, ์์ฒญ์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ ๋ ํน์ URL๋ก ๋ค์ ํธ์ถํ๋ผ๋ ์๋ฏธ์
๋๋ค. PSP๊ฐ ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ๋ฉด HTTP ์์ฒญ์ ํธ์ถํ์ฌ ๊ฒฐ์ ์ํ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
+
+์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด ๋ฐ๋๊ณ ๊ฒฐ์ ์๋น์ค๋ ๋ ์ด์ ๊ฒฐ์ ์ํ๋ฅผ ํด๋งํ๊ธฐ ์ํด ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ ํ์๊ฐ ์์ต๋๋ค.
+
+PSP๊ฐ ๋ค์ ์๋ตํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ํ๋์? ๋งค ์๊ฐ ๊ฒฐ์ ์ํ๋ฅผ ํ์ธํ๋๋ก ํ์ฐ์คํคํ ์์
์ ์ค์ ํ ์ ์์ต๋๋ค.
+
+์นํ
์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ HTTP ์์ฒญ์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ฒ์ค API ๋๋ ํธ์ API๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ์นํ
์ ์ฌ์ฉํ ๋๋ ๋ค์ ์ธ ๊ฐ์ง ์ฌํญ์ ์ฃผ์ํด์ผ ํฉ๋๋ค.
+
+1. ์ธ๋ถ ์๋น์ค๊ฐ ํธ์ถํ ์ ์๋ ์ ์ ํ API๋ฅผ ์ค๊ณํด์ผ ํฉ๋๋ค.
+2. ๋ณด์์ ์ํด API ๊ฒ์ดํธ์จ์ด์ ์ ์ ํ ๊ท์น์ ์ค์ ํด์ผ ํฉ๋๋ค.
+3. ์ธ๋ถ ์๋น์ค์ ์ฌ๋ฐ๋ฅธ URL์ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
+
+### API ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ API ์ฑ๋ฅ์ ๊ฐ์ ํ๋ 5๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+Pagination
+
+์ด๋ ๊ฒฐ๊ณผ์ ํฌ๊ธฐ๊ฐ ํด ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ต์ ํ ๋ฐฉ๋ฒ์
๋๋ค. ์๋น์ค ์๋ต์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ค์ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
+
+Asynchronous Logging
+
+๋๊ธฐ์ ๋ก๊น
์ ๋ชจ๋ ํธ์ถ์ ๋ํด ๋์คํฌ๋ฅผ ์ฒ๋ฆฌํ๋ฏ๋ก ์์คํ
์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ๋น๋๊ธฐ ๋ก๊น
์ ๋ก๊ทธ๋ฅผ ๋ฝํ๋ฆฌ(lock-free) ๋ฒํผ๋ก ๋จผ์ ์ ์กํ ํ ์ฆ์ ๋ฐํํฉ๋๋ค. ๋ก๊ทธ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋์คํฌ์ ํ๋ฌ์๋ฉ๋๋ค. ๋ฐ๋ผ์ I/O ์ค๋ฒํค๋๊ฐ ํฌ๊ฒ ์ค์ด๋ญ๋๋ค.
+
+Caching
+
+์์ฃผ ์ก์ธ์คํ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์์ ์ ์ฅํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ๋ฐฉ๋ฌธํ๋ ๋์ ์บ์๋ฅผ ๋จผ์ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค. ์บ์์ ๋ฏธ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค. Redis์ ๊ฐ์ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ฏ๋ก ๋ฐ์ดํฐ ์ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค ํจ์ฌ ๋น ๋ฆ
๋๋ค.
+
+Payload Compression
+
+์์ฒญ๊ณผ ์๋ต์ gzip ๋ฑ์ ์ฌ์ฉํ์ฌ ์์ถํ ์ ์์ผ๋ฏ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ํจ์ฌ ์์์ง๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์
๋ก๋์ ๋ค์ด๋ก๋ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
+
+Connection Pool
+
+๋ฆฌ์์ค์ ์ก์ธ์คํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์์ต๋๋ค. ๋ซํ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์
์ ์ด๋ฉด ์๋นํ ์ค๋ฒํค๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์คํ ์ปค๋ฅ์
ํ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ์ปค๋ฅ์
ํ์ ์ปค๋ฅ์
๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค.
+
+### HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC)
+
+๊ฐ ์ธ๋์ HTTP๋ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์ฃผ์ ํน์ง์ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+- HTTP 1.0์ 1996๋
์ ์์ฑ๋์ด ์์ ํ ๋ฌธ์ํ๋์์ต๋๋ค. ๋์ผํ ์๋ฒ์ ๋ํ ๋ชจ๋ ์์ฒญ์๋ ๋ณ๋์ TCP ์ฐ๊ฒฐ์ด ํ์ํฉ๋๋ค.
+
+- HTTP 1.1์ 1997๋
์ ๋ฐํ๋์์ต๋๋ค. TCP ์ปค๋ฅ์
์ ์ฌ์ฌ์ฉ(persistent connection)์ ์ํด ์ด์ด๋ ์ ์์ง๋ง, HOL(head-of-line) ์ฐจ๋จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ ๋ชปํฉ๋๋ค.
+
+ HOL ์ฐจ๋จ - ๋ธ๋ผ์ฐ์ ์์ ํ์ฉํ๋ ๋ณ๋ ฌ ์์ฒญ์ ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ฉด ํ์ ์์ฒญ์ ์ด์ ์์ฒญ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
+
+- HTTP 2.0์ 2015๋
์ ๋ฐํ๋์์ต๋๋ค. ์ด๋ ์์ฒญ ๋ค์คํ๋ฅผ ํตํด HOL ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ์์ฉ ๊ณ์ธต์์ HOL ์ฐจ๋จ์ ์ ๊ฑฐํ์ง๋ง, ์ ์ก(TCP) ๊ณ์ธต์๋ ์ฌ์ ํ HOL์ด ์กด์ฌํฉ๋๋ค.
+
+ ๋ค์ด์ด๊ทธ๋จ์์ ๋ณผ ์ ์๋ฏ์ด HTTP 2.0์ ๋์ผํ TCP ์ปค๋ฅ์
์ ์๋ก ๋ค๋ฅธ HTTP ๊ตํ์ ๋ค์คํํ ์ ์๋ ์ถ์ํ ๊ฐ๋
์ธ HTTP "stream"์ ๋์
ํ์ต๋๋ค. ๊ฐ ์คํธ๋ฆผ์ ์์๋๋ก ์ ์กํ ํ์๋ ์์ต๋๋ค.
+
+- HTTP 3.0 ์ด์์ 2020๋
์ ๋ฐํ๋์์ต๋๋ค. HTTP 2.0์ ํ์ ๋ฒ์ ์ผ๋ก ์ ์๋์์ต๋๋ค. ๊ธฐ๋ณธ ํธ๋์คํฌํธ ํ๋กํ ์ฝ๋ก TCP ๋์ QUIC์ ์ฌ์ฉํ๋ฏ๋ก ์ ์ก ๊ณ์ธต์์ HOL ์ฐจ๋จ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
+
+QUIC์ UDP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด๋ ์ ์ก ๊ณ์ธต์์ ์คํธ๋ฆผ์ ํผ์คํธ ํด๋์ค ์ํฐ์ฆ์ผ๋ก ์๊ฐํฉ๋๋ค. QUIC ์คํธ๋ฆผ์ ๋์ผํ QUIC ์ปค๋ฅ์
์ ๊ณต์ ํ๋ฏ๋ก ์ ์คํธ๋ฆผ์ ์์ฑํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ํธ๋์
ฐ์ดํฌ๋ ์ฌ๋ก์ฐ ์คํํธ๊ฐ ํ์ํ์ง ์์ผ๋ฉฐ, ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํ ์คํธ๋ฆผ์ ์ํฅ์ ๋ฏธ์น๋ ํจํท ์์ค์ด ๋ค๋ฅธ ์คํธ๋ฆผ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ๋
๋ฆฝ์ ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
+
+### SOAP vs REST vs GraphQL vs RPC
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ API ํ์๋ผ์ธ๊ณผ API ์คํ์ผ์ ๋น๊ตํ ๊ฒ์
๋๋ค.
+
+์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ค์ํ API ์ํคํ
์ฒ ์คํ์ผ์ด ์ถ์๋ฉ๋๋ค. ๊ฐ ์คํ์ผ์๋ ๋ฐ์ดํฐ ๊ตํ์ ํ์คํํ๋ ๊ณ ์ ํ ํจํด์ด ์์ต๋๋ค.
+
+๋ค์ด์ด๊ทธ๋จ์์ ๊ฐ ์คํ์ผ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
+
+
+
+
+
+
+### Code First vs API First
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์ฝ๋ ํผ์คํธ ๊ฐ๋ฐ๊ณผ API ํผ์คํธ ๊ฐ๋ฐ์ ์ฐจ์ด์ ์ ๋ณด์ฌ์ค๋๋ค. API ํผ์คํธ ์ค๊ณ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
+
+
+
+
+
+
+- ๋ง์ดํฌ๋ก์๋น์ค๋ ์์คํ
๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํค๋ฉฐ, ์์คํ
์ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๋ณ๋์ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ํคํ
์ฒ๋ ์
๋ฌด์ ๋์ปคํ๋ง๊ณผ ๋ถ๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ์ง๋ง ์๋น์ค ๊ฐ์ ๋ค์ํ ์ปค๋ฎค๋์ผ์ด์
์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
+
+์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์์คํ
์ ๋ณต์ก์ฑ์ ๊ณ ๋ คํ๊ณ ์๋น์ค์ ๋ฒ์๋ฅผ ์ ์คํ๊ฒ ์ ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
+
+- ๊ธฐ๋ฅ์กฐ์ง์ ๋์ผํ ์ธ์ด๋ก ์์ฌ์ํตํด์ผ ํ๋ฉฐ, ๋ชฉ์ ์กฐ์ง์ ์์ฒด ์ปดํฌ๋ํธ์ ์๋น์ค์๋ง ์ฑ
์์ด ์์ต๋๋ค. API ์ค๊ณ๋ฅผ ํตํด ์กฐ์ง์ด ๋์ผํ ์ธ์ด๋ก ์์ฌ์ํตํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
+
+์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์์ฒญ๊ณผ ์๋ต์ ๋ชจ์๋ก ์์ฑํ์ฌ API ์ค๊ณ๋ฅผ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
+
+- ์ํํธ์จ์ด ํ์ง๊ณผ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ด ํฅ์๋ฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ์์๋ ๋ ๋๋ถ๋ถ์ ๋ถํ์ค์ฑ์ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ ์ํํด์ง๊ณ ์ํํธ์จ์ด ํ์ง์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
+
+๊ฐ๋ฐ์๋ ๊ฐ์์ค๋ฌ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋
ผ์ํ๋ ๋์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ํ๋ก์ธ์ค์ ๋ง์กฑํฉ๋๋ค.
+
+ํ๋ก์ ํธ ๋ผ์ดํ์ฌ์ดํด์ด ๋๋ ๋ฌด๋ ต์ ์ํ๋ผ์ด์ฆ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ญ๋๋ค.
+
+API๋ฅผ ๋จผ์ ์ค๊ณํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ๊ฐ๋ฐ๋๋ ๋์ ํ
์คํธ๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค. ์ด๋ค ๋ฉด์์๋ API ํผ์คํธ ๊ฐ๋ฐ ๋ฐฉ์์ ์ฌ์ฉํ ๋ TDD(Test Driven Design)๋ฅผ ์ ์ฉํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
+
+### HTTP status codes
+
+
+
+
+
+
+HTTP์ ์๋ต ์ฝ๋๋ 5๊ฐ์ง ์นดํ
๊ณ ๋ฆฌ๋ก ๋๋์ด์ง๋๋ค.
+
+Informational (100-199)
+Success (200-299)
+Redirection (300-399)
+Client Error (400-499)
+Server Error (500-599)
+
+### API gateway๋ ๋ฌด์์ ํ๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์์ธํ ๋ด์ฉ์ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+1๋จ๊ณ - ํด๋ผ์ด์ธํธ๊ฐ API ๊ฒ์ดํธ์จ์ด์ HTTP ์์ฒญ์ ๋ณด๋
๋๋ค.
+
+2๋จ๊ณ - API ๊ฒ์ดํธ์จ์ด๊ฐ HTTP ์์ฒญ์ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ํ์ฑํ๊ณ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค.
+
+3๋จ๊ณ - API ๊ฒ์ดํธ์จ์ด๊ฐ allow-list/deny-list ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค.
+
+4๋จ๊ณ - API ๊ฒ์ดํธ์จ์ด๊ฐ ์ธ์ฆ๊ณผ ์ธ๊ฐ๋ฅผ ์ํด ID ๊ณต๊ธ์์ ํต์ ํฉ๋๋ค.
+
+5๋จ๊ณ - ์์ฒญ์ ๋ ์ดํธ ๋ฆฌ๋ฏธํธ ๊ท์น์ ์ ์ฉํฉ๋๋ค. ํ๋๋ฅผ ์ด๊ณผํ๋ฉด ์์ฒญ์ ๊ฑฐ๋ถํฉ๋๋ค.
+
+6,7๋จ๊ณ - ์์ฒญ์ด ๊ธฐ๋ณธ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ์ผ๋ฏ๋ก ์ด์ API ๊ฒ์ดํธ์จ์ด๊ฐ path ๋งค์นญ์ ํตํด ๋ผ์ฐํ
ํ ๊ด๋ จ ์๋น์ค๋ฅผ ์ฐพ์ต๋๋ค.
+
+8๋จ๊ณ - API ๊ฒ์ดํธ์จ์ด๊ฐ ์์ฒญ์ ์ ์ ํ ํ๋กํ ์ฝ๋ก ๋ณํํ์ฌ ๋ฐฑ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ ์กํฉ๋๋ค.
+
+9-12๋จ๊ณ: API ๊ฒ์ดํธ์จ์ด๋ ์ค๋ฅ๋ฅผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๊ณ , ๋ณต๊ตฌํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ฅ์ ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.(circuit break) ๋ํ ๋ก๊น
๊ณผ ๋ชจ๋ํฐ๋ง์ ์ํด ELK(Elastic-Logstash-Kibana) ์คํ์ ํ์ฉํ ์ ์์ต๋๋ค. ๋๋๋ก API ๊ฒ์ดํธ์จ์ด์ ๋ฐ์ดํฐ๋ฅผ ์บ์ํ๊ธฐ๋ ํฉ๋๋ค.
+
+### ํจ๊ณผ์ ์ด๊ณ ์์ ํ API๋ฅผ ์ค๊ณํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์ผํ ์นดํธ ์์์ ํจ๊ป ์ผ๋ฐ์ ์ธ API ์ค๊ณ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+
+API ์ค๊ณ๋ ๋จ์ํ URL path ์ค๊ณ๊ฐ ์๋๋ผ๋ ์ ์ ์ ์ํ์ธ์. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ์ ํ ๋ฆฌ์์ค ์ด๋ฆ, ์๋ณ์, path ํจํด์ ์ ํํด์ผ ํฉ๋๋ค. ์ ์ ํ HTTP ํค๋ ํ๋๋ฅผ ์ค๊ณํ๊ฑฐ๋ API ๊ฒ์ดํธ์จ์ด ๋ด์์ ํจ๊ณผ์ ์ธ ๋ ์ดํธ ๋ฆฌ๋ฏธํธ ๊ท์น์ ์ค๊ณํ๋ ๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ํฉ๋๋ค.
+
+### TCP/IP encapsulation
+
+๋ฐ์ดํฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ด๋ป๊ฒ ์ ์ก๋๋์? OSI ๋ชจ๋ธ์ ๋ง์ ๊ณ์ธต์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ด๋ป๊ฒ ์บก์ํ๋๊ณ ์บก์ํ๊ฐ ํด์ ๋๋์ง ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+1๋จ๊ณ: ๋๋ฐ์ด์ค A๊ฐ ๋คํธ์ํฌ์์ HTTP ํ๋กํ ์ฝ์ ํตํด ์ฅ์น B๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋, ๋จผ์ ์์ฉ ๊ณ์ธต์์ HTTP ํค๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
+
+2๋จ๊ณ: ๊ทธ๋ฐ ๋ค์ TCP ํน์ UDP ํค๋๊ฐ ๋ฐ์ดํฐ์ ์ถ๊ฐ๋ฉ๋๋ค. ์ด ํค๋๋ ์ ์ก ๊ณ์ธต์์ TCP ์ธ๊ทธ๋จผํธ๋ก ์บก์ํ๋ฉ๋๋ค. ํค๋์๋ ์ถ๋ฐ์ง ํฌํธ, ๋์ฐฉ์ง ํฌํธ, ์ํ์ค ๋๋ฒ๊ฐ ํฌํจ๋ฉ๋๋ค.
+
+3๋จ๊ณ: ๊ทธ๋ฐ ๋ค์ ์ธ๊ทธ๋จผํธ๋ ๋คํธ์ํฌ ๊ณ์ธต์์ IP ํค๋๋ก ์บก์ํ๋ฉ๋๋ค. IP ํค๋์๋ ์ถ๋ฐ์ง/๋์ฐฉ์ง IP ์ฃผ์๊ฐ ํฌํจ๋ฉ๋๋ค.
+
+4๋จ๊ณ: ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต์์ IP ๋ฐ์ดํฐ๊ทธ๋จ์ ์ถ๋ฐ์ง/๋์ฐฉ์ง MAC ์ฃผ์์ ํจ๊ป MAC ํค๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
+
+5๋จ๊ณ: ์บก์ํ๋ ํ๋ ์์ด ๋ฌผ๋ฆฌ ๊ณ์ธต์ผ๋ก ์ ์ก๋๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด 2์ง์ ๋นํธ๋ก ์ ์ก๋ฉ๋๋ค.
+
+6-10๋จ๊ณ: ๋๋ฐ์ด์ค B๊ฐ ๋คํธ์ํฌ์์ ๋นํธ๋ฅผ ์์ ํ๋ฉด ์บก์ํ ํ๋ก์ธ์ค์ ์ญ์ฒ๋ฆฌ์ธ ์บก์ํ ํด์ ํ๋ก์ธ์ค๋ฅผ ์ํํฉ๋๋ค. ํค๋๊ฐ ํ ์ธต์ฉ ์ ๊ฑฐ๋๊ณ ๊ฒฐ๊ตญ ๋๋ฐ์ด์ค B๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๊ฒ ๋ฉ๋๋ค.
+
+๋คํธ์ํฌ ๋ชจ๋ธ์ ๊ณ์ธต์ด ํ์ํ ์ด์ ๋ ๊ฐ ๊ณ์ธต์ด ๊ณ ์ ํ ์ฑ
์์ ์ง์คํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ฐ ๊ณ์ธต์ ์ฒ๋ฆฌ ์ง์นจ์ ํค๋์ ์์กดํ ์ ์์ผ๋ฉฐ ๋ง์ง๋ง ๊ณ์ธต์ ๋ฐ์ดํฐ์ ์๋ฏธ๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค.
+
+### ์ Nginx๋ฅผ "reverse" ํ๋ก์๋ผ๊ณ ๋ถ๋ฅด๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ๐๐จ๐ซ๐ฐ๐๐ซ๐ ๐ฉ๐ซ๐จ๐ฑ๐ฒ ์ ๐ซ๐๐ฏ๐๐ซ๐ฌ๐ ๐ฉ๐ซ๐จ๐ฑ๐ฒ ์ ์ฐจ์ด์ ์ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+ํฌ์๋ ํ๋ก์๋ ์ฌ์ฉ์ ๋๋ฐ์ด์ค์ ์ธํฐ๋ท ์ฌ์ด์ ์๋ ์๋ฒ์
๋๋ค.
+
+ํฌ์๋ ํ๋ก์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
+
+1. ํด๋ผ์ด์ธํธ ๋ณดํธ
+2. ๋ธ๋ผ์ฐ์ง ์ ์ฝ ์ฐํํ๊ธฐ
+3. ํน์ ์ฝํ
์ธ ์ ๋ํ ์ก์ธ์ค ์ฐจ๋จ
+
+๋ฆฌ๋ฒ์ค ํ๋ก์๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฝํ์ฌ ์น ์๋ฒ๋ก ์์ฒญ์ ์ ๋ฌํ ํ ํ๋ก์ ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ๊ฒ์ฒ๋ผ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ฐํํ๋ ์๋ฒ์
๋๋ค.
+
+๋ฆฌ๋ฒ์ค ํ๋ก์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
+
+1. ์๋ฒ ๋ณดํธ
+2. ๋ก๋ ๋ฐธ๋ฐ์ฑ
+3. ์ ์ ์ฝํ
์ธ ์บ์ฑ
+4. SSL ํต์ ์ํธํ ๋ฐ ๋ณตํธํ
+
+### ์ผ๋ฐ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌด์์ธ๊ฐ์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ 6๊ฐ์ง ์ผ๋ฐ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+- ์ ์ ์๊ณ ๋ฆฌ์ฆ
+
+1. Round robin
+
+ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ๋ค๋ฅธ ์๋น์ค ์ธ์คํด์ค๋ก ์ ์ก๋ฉ๋๋ค. ์๋น์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์คํ
์ดํธ๋ฆฌ์ค(๊ณผ๊ฑฐ ์ฒ๋ฆฌ ๋ด์ฉ์ ๊ธฐ์ตํ์ง ์๋ ์๋น์ค)์ฌ์ผ ํฉ๋๋ค.
+
+3. Sticky round-robin
+
+ ์ด๋ ๋ผ์ด๋ ๋ก๋น ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ ํ ๊ฒ์
๋๋ค. ์จ๋ฆฌ์ค์ ์ฒซ ๋ฒ์งธ ์์ฒญ์ด ์๋น์ค A๋ก ์ ๋ฌ๋๋ฉด ๋ค์ ์์ฒญ๋ ์๋น์ค A๋ก ์ ๋ฌ๋ฉ๋๋ค.
+
+4. Weighted round-robin
+
+ ๊ด๋ฆฌ์๋ ๊ฐ ์๋น์ค์ ๋ํ ๊ฐ์ค์น๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฐ์ค์น๊ฐ ๋์ ์๋น์ค๋ ๋ค๋ฅธ ์๋น์ค๋ณด๋ค ๋ ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
+
+6. Hash
+
+ ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ด์ค๋ ์์ฒญ์ IP ๋๋ URL์ ํด์ ํจ์๋ฅผ ์ ์ฉํฉ๋๋ค. ์์ฒญ์ ํด์ ํจ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๊ด๋ จ ์ธ์คํด์ค๋ก ๋ผ์ฐํ
๋ฉ๋๋ค.
+
+- ๋์ ์๊ณ ๋ฆฌ์ฆ
+
+5. Least connections
+
+ ๋์ ์ฐ๊ฒฐ์ด ๊ฐ์ฅ ์ ์ ์๋น์ค ์ธ์คํด์ค๋ก ์ ์์ฒญ์ด ์ ์ก๋ฉ๋๋ค.
+
+7. Least response time
+
+ ์ ์์ฒญ์ ์๋ต ์๊ฐ์ด ๊ฐ์ฅ ๋น ๋ฅธ ์๋น์ค ์ธ์คํด์ค๋ก ์ ์ก๋ฉ๋๋ค.
+
+### URL, URI, URN - ์ฐจ์ด๋ฅผ-์๊ณ -์๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ URL, URI, URN์ ๋น๊ต๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+- URI
+
+URI์ Uniform Resource Identifier์ ์ฝ์์
๋๋ค. ์น์์ ๋
ผ๋ฆฌ์ ๋๋ ๋ฌผ๋ฆฌ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํฉ๋๋ค. URL๊ณผ URN์ URI์ ํ์ ์ ํ์
๋๋ค. URL์ ๋ฆฌ์์ค๋ฅผ ์ฐพ๊ณ URN์ ๋ฆฌ์์ค์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
+
+URI๋ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
+scheme:[//authority]path[?query][#fragment]
+
+- URL
+
+URL์ Uniform Resource Locator์ ์ฝ์๋ก, HTTP์ ํต์ฌ ๊ฐ๋
์
๋๋ค. ์น์์ ๊ณ ์ ํ ๋ฆฌ์์ค์ ์ฃผ์์
๋๋ค. FTP์ JDBC์ ๊ฐ์ ๋ค๋ฅธ ํ๋กํ ์ฝ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
+
+- URN
+
+URN์ Uniform Resource Name์ ์ฝ์๋ก, urn ์คํค๋ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. URN์ ๋ฆฌ์์ค๋ฅผ ์ฐพ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์ด์ด๊ทธ๋จ์ ์ ์๋ ๊ฐ๋จํ ์๋ ๋ค์์คํ์ด์ค์ ๋ค์์คํ์ด์ค ํน์ ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
+
+์ด ์ฃผ์ ์ ๋ํด ๋ ์์ธํ ์์๋ณด๋ ค๋ฉด [W3Cโs clarification](https://www.w3.org/TR/uri-clarification/)์ ์ถ์ฒํฉ๋๋ค.
+
+## CI/CD
+
+### ์ฌ์ด ์ฉ์ด๋ก ์ค๋ช
ํ๋ CI/CD ํ์ดํ๋ผ์ธ
+
+
+
+
+
+์น์
1 - CI/CD๊ฐ ํฌํจ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช
์ฃผ๊ธฐ
+
+์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช
์ฃผ๊ธฐ(SDLC)๋ ๊ฐ๋ฐ, ํ
์คํธ, ๋ฐฐํฌ, ์ ์ง๋ณด์ ๋ฑ ๋ช ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. CI/CD๋ ์ด๋ฌํ ๋จ๊ณ๋ฅผ ์๋ํํ๊ณ ํตํฉํ์ฌ ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
+
+์ฝ๋๊ฐ git ๋ฆฌํฌ์งํ ๋ฆฌ์ ํธ์๋๋ฉด ์๋ํ๋ ๋น๋, ํ
์คํธ ํ๋ก์ธ์ค๊ฐ ์์๋ฉ๋๋ค. ์ฝ๋์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ธฐ ์ํด ์๋ํฌ์๋(e2e) ํ
์คํธ ์ผ์ด์ค๊ฐ ์คํ๋ฉ๋๋ค. ํ
์คํธ๋ฅผ ํต๊ณผํ๋ฉด ์ฝ๋๋ฅผ ์คํ
์ด์ง/ํ๋ก๋์
ํ๊ฒฝ์ ์๋์ผ๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด์๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์ฝ๋๋ ๋ฒ๊ทธ ์์ ์ ์ํด ๊ฐ๋ฐ ๋จ๊ณ๋ก ๋ค์ ๋ณด๋ด์ง๋๋ค. ์ด๋ฌํ ์๋ํ๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ ํ๋ก๋์
ํ๊ฒฝ์์ ๋ฐ์ํ๋ ๋ฒ๊ทธ ์ํ์ ์ค์ฌ์ค๋๋ค.
+
+์น์
2 - CI์ CD์ ์ฐจ์ด์
+
+Continuous Integration(CI)์ ๋น๋, ํ
์คํธ, ๋ณํฉ ํ๋ก์ธ์ค๋ฅผ ์๋ํํฉ๋๋ค. ์ฝ๋๊ฐ ์ปค๋ฐ๋ ๋๋ง๋ค ํ
์คํธ๋ฅผ ์คํํ์ฌ ํตํฉ ์ด์๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ์ปค๋ฐ์ ์์ฃผ ํ๊ณ ํผ๋๋ฐฑ์ ๋น ๋ฅด๊ฒ ๋ฐ์ ์ ์์ต๋๋ค.
+
+Continuous Delivery(CD)๋ ์ธํ๋ผ ๋ณ๊ฒฝ, ๋ฐฐํฌ์ ๊ฐ์ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ์๋ํํฉ๋๋ค. ์๋ํ๋ ์ํฌํ๋ก๋ฅผ ํตํด ์ธ์ ๋ ์ง ์ํํธ์จ์ด๋ฅผ ์์ ์ ์ผ๋ก ๋ฆด๋ฆฌ์คํ ์ ์์ต๋๋ค. ๋ํ CD๋ ํ๋ก๋์
๋ฐฐํฌ ์ ์ ํ์ํ ๋ฉ๋ด์ผ ํ
์คํธ์ ์น์ธ ๋จ๊ณ๋ฅผ ์๋ํํ ์๋ ์์ต๋๋ค.
+
+์น์
3 - CI/CD ํ์ดํ๋ผ์ธ
+
+์ผ๋ฐ์ ์ธ CI/CD ํ์ดํ๋ผ์ธ์ ๋ค์๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ๋ ์ฌ๋ฌ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
+- ๊ฐ๋ฐ์๊ฐ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์ค ์ปจํธ๋กค์ ์ปค๋ฐํฉ๋๋ค.
+- CI ์๋ฒ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๊ณ ๋น๋๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
+- ์ฝ๋๊ฐ ์ปดํ์ผ๋๊ณ ํ
์คํธ๋ฉ๋๋ค(๋จ์ ํ
์คํธ, ํตํฉ ํ
์คํธ).
+- ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฐ์์๊ฒ ๋ณด๊ณ ํฉ๋๋ค.
+- ์ฑ๊ณตํ๋ฉด ์ํฐํฉํธ๊ฐ ์คํ
์ด์ง ํ๊ฒฝ์ ๋ฐฐํฌ๋ฉ๋๋ค.
+- ๋ฆด๋ฆฌ์ค ์ ์ ์คํ
์ด์ง ํ๊ฒฝ์์ ์ถ๊ฐ ํ
์คํธ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
+- CD ์์คํ
์ด ์น์ธ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ๋ก๋์
์ ๋ฐฐํฌํฉ๋๋ค.
+
+### ๋ทํ๋ฆญ์ค ๊ธฐ์ ์คํ (CI/CD Pipeline)
+
+
+
+
+
+ํ๋๋: ๋ทํ๋ฆญ์ค ์์ง๋์ด๋ง์ ํ๋๋์๋ JIRA๋ฅผ, ๋ฌธ์ํ์๋ Confluence๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+์ฝ๋ฉ: Java๋ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ํ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ฉฐ, ๋ค๋ฅธ ์ธ์ด๋ ์ ์ฆ์ผ์ด์ค์ ๋ฐ๋ผ ์ฌ์ฉ๋ฉ๋๋ค.
+
+๋น๋: Gradle์ ์ฃผ๋ก ๋น๋์ ์ฌ์ฉ๋๋ฉฐ, Gradle ํ๋ฌ๊ทธ์ธ์ ๋ค์ํ ์ ์ค์ผ์ด์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค.
+
+ํจํค์ง: ํจํค์ง ๋ฐ ์์กด์ฑ์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ํด ์๋ง์กด ๋จธ์ ์ด๋ฏธ์ง(AMI)์ ํจํค์ง๋ฉ๋๋ค.
+
+ํ
์คํ
: ํ
์คํธ๋ ์นด์ค์ค ํด(์์คํ
์ ์์์น ๋ชปํ ์ฅ์ ๋ ํธ๋ํฝ์ ๋ฐ์์์ผ ์์คํ
์ ์์ ์ฑ์ ํ
์คํธํ๋ ๋๊ตฌ)์ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ ์ ๋๋ ํ๋ก๋์
๋ฌธํ๋ฅผ ๊ฐ์กฐํฉ๋๋ค.
+
+๋ฐฐํฌ: ๋ทํ๋ฆญ์ค๋ ์นด๋๋ฆฌ ๋กค์์ ๋ฐฐํฌ์ ์์ฒด ๊ตฌ์ถํ Spinnaker๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+๋ชจ๋ํฐ๋ง: ๋ชจ๋ํฐ๋ง ์งํ๋ Atlas์์ ์ค์ ์ง์ค์์ผ๋ก ๊ด๋ฆฌ๋๋ฉฐ, ์ด์ ์งํ๋ฅผ ๊ฐ์งํ๋ ๋ฐ Kayenta๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
+
+์ธ์๋ํธ ๋ฆฌํฌํธ: ์ฐ์ ์์์ ๋ฐ๋ผ ์ธ์๋ํธ๊ฐ ๋ฐ์ก๋๋ฉฐ, ์ฌ๊ณ ์ฒ๋ฆฌ๋ฅผ ์ํด PagerDuty๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
+
+## ์ํคํ
์ฒ ํจํด
+
+### MVC, MVP, MVVM, MVVM-C, VIPER
+์ด๋ฌํ ์ํคํ
์ฒ ํจํด์ iOS, Android ํ๋ซํผ์์ ์ฑ ๊ฐ๋ฐ ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ํจํด์
๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ด์ ํจํด์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์ด๋ฌํ ํจํด์ ๋์
ํ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ๋ค๋ฅผ๊น์?
+
+
+
+
+
+- ๊ฐ์ฅ ์ค๋๋ ํจํด์ธ MVC๋ ๊ฑฐ์ 50๋
์ ์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ค.
+- ๋ชจ๋ ํจํด์๋ ์ฝํ
์ธ ๋ฅผ ํ์ํ๊ณ ์ฌ์ฉ์ ์
๋ ฅ์ ์์ ํ๋ view(V)๊ฐ ์์ต๋๋ค.
+- ๋๋ถ๋ถ์ ํจํด์๋ ๋น์ฆ๋์ค ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ model(M)์ด ํฌํจ๋ฉ๋๋ค.
+- Controller, presenter, view-model์ ๋ทฐ์ ๋ชจ๋ธ(VIPER ํจํด์ entity) ์ฌ์ด๋ฅผ ๋งค๊ฐํ๋ ๋ณํ๊ธฐ์
๋๋ค.
+
+### ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์์์ผ ํ 18๊ฐ์ง ํต์ฌ ๋์์ธ ํจํด
+
+ํจํด์ ์ผ๋ฐ์ ์ธ ์ค๊ณ ๋ฌธ์ ์ ๋ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์
์ผ๋ก, ๋ณด๋ค ์ํํ๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ํจํด์ ๋ ๋์ ์ํํธ์จ์ด ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์ค๊ณ๋(blueprint) ์ญํ ์ ํฉ๋๋ค. ๋ค์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํจํด ์ค ์ผ๋ถ์
๋๋ค.
+
+
+
+
+
+- Abstract Factory: Family Creator - ๊ด๋ จ ํญ๋ชฉ ๊ทธ๋ฃน์ ๋ง๋ญ๋๋ค.
+- Builder: Lego Master - ์์ฑ ๋ฐ ๋ชจ์์ ๋ถ๋ฆฌํ์ฌ ๊ฐ์ฒด๋ฅผ ๋จ๊ณ๋ณ๋ก ๋น๋ํฉ๋๋ค.
+- Prototype: Clone Maker - ์์ ํ ์ค๋น๋ ์์ ์ ๋ณต์ฌ๋ณธ์ ์์ฑํฉ๋๋ค.
+- Singleton: One and Only - ์ธ์คํด์ค๊ฐ ํ๋๋ฟ์ธ ํน๋ณํ ํด๋์ค์
๋๋ค.
+- Adapter: Universal Plug - ์๋ก ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ๊ฒ๋ค์ ์ฐ๊ฒฐํฉ๋๋ค.
+- Bridge: Function Connector - ๊ฐ์ฒด์ ๊ตฌํ๊ณผ ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค.
+- Composite: Tree Builder - ๋จ์ํ ๋ถ๋ถ๊ณผ ๋ณต์กํ ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ์ฑํฉ๋๋ค.
+- Decorator: Customizer - ๊ฐ์ฒด์ ํต์ฌ์ ์์ํ์ง ์๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.
+- Facade: One-Stop-Shop - ์ ์ฒด ์์คํ
์ ๋จ์ผํ๊ณ ๊ฐ๋จํ ์ธํฐํ์ด์ค๋ก ๋ํ๋
๋๋ค.
+- Flyweight: Space Saver - ์๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํญ๋ชฉ์ ํจ์จ์ ์ผ๋ก ๊ณต์ ํฉ๋๋ค.
+- Proxy: Stand-In Actor - ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ํํ์ฌ ์ก์ธ์ค ๋๋ ์์
์ ์ ์ดํฉ๋๋ค.
+- Chain of Responsibility: Request Relay - ์์ฒญ์ ์ฒ๋ฆฌํ ๋๊น์ง ๊ฐ์ฒด ์ฒด์ธ์ ํตํด ์ ๋ฌํฉ๋๋ค.
+- Command: Task Wrapper - ์์ฒญ์ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ์์
์ค๋น๋ฅผ ๊ฐ์ถ๊ฒ ํฉ๋๋ค.
+- Iterator: Collection Explorer - ์ปฌ๋ ์
์์์ ํ๋์ฉ ์ก์ธ์คํฉ๋๋ค.
+- Mediator: Communication Hub - ์๋ก ๋ค๋ฅธ ํด๋์ค ๊ฐ์ ์ธํฐ๋์
์ ๊ฐ์ํํฉ๋๋ค.
+- Memento: Time Capsule - ๊ฐ์ฒด์ ์ํ๋ฅผ ์บก์ฒํ๊ณ ๋ณต์ํฉ๋๋ค.
+- Observer: News Broadcaster - ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ณ๊ฒฝ์ ๋ํด ํด๋์ค์๊ฒ ์๋ฆฝ๋๋ค.
+- Visitor: Skillful Guest - ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ์์
์ ์ถ๊ฐํฉ๋๋ค.
+
+## ๋ฐ์ดํฐ๋ฒ ์ด์ค
+
+### ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ์นํธ์ํธ
+
+
+
+
+
+ํ๋ก์ ํธ์ ์ ํฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ๊ฒ์ ๋ณต์กํ ์์
์
๋๋ค. ๊ฐ๊ธฐ ๋ค๋ฅธ ์ ์ฆ์ผ์ด์ค์ ์ ํฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ต์
์ด ๋ง์ผ๋ฉด ์์ฌ ๊ฒฐ์ ์ ๋ํ ํผ๋ก๋๊ฐ ๋น ๋ฅด๊ฒ ๋์์ง ์ ์์ต๋๋ค.
+
+์ด ์นํธ์ํธ๊ฐ ํ๋ก์ ํธ์ ์๊ตฌ์ฌํญ์ ๋ง๋ ์ฌ๋ฐ๋ฅธ ์๋น์ค๋ฅผ ์ฐพ์๋ด๊ณ ์ ์ฌ์ ์ธ ํจ์ ์ ํผํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
+
+์ฐธ๊ณ : ๊ตฌ๊ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฆ์ผ์ด์ค์ ๋ํ ๋ฌธ์๊ฐ ์ ํ๋์ด ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃ๋ฅผ ์ต๋ํ ๊ฒํ ํ๊ณ ์ต์ ์ ์ต์
์ ์ ์ํ์ง๋ง, ์ผ๋ถ ํญ๋ชฉ์ ๋ ์ ํํ ์ ๋ณด๊ฐ ํ์ํ ์ ์์ต๋๋ค.
+
+### ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐํํ๋ 8๊ฐ์ง ๋ฐ์ดํฐ ๊ตฌ์กฐ
+
+์ ๋ต์ ์ ์ฆ์ผ์ด์ค์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ์ ์ธ๋ฑ์ค ๋ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ ํฌ๋งท๋ ๋๋ฒ, ์คํธ๋ง, ์ง๋ฆฌ์ ์ขํ ๋ฑ ๋ค์ํฉ๋๋ค. ์์คํ
์ด ์ฐ๊ธฐ ์ค์ฌ์ผ ์๋, ์ฝ๊ธฐ ์ค์ฌ์ผ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค ํฌ๋งท ์ ํ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
+
+
+
+
+
+๋ค์์ ๋ฐ์ดํฐ ์ธ๋ฑ์ฑ์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง ๋ฐ์ดํฐ ๊ตฌ์กฐ์
๋๋ค.
+
+- Skiplist: ์ผ๋ฐ์ ์ธ ์ธ๋ฉ๋ชจ๋ฆฌ ์ธ๋ฑ์ค ํ์
์ผ๋ก, Redis์์ ์ฌ์ฉ.
+- Hash index: Map ๋ฐ์ดํฐ ๊ตฌ์กฐ(๋๋ Collection)์ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ๊ตฌํ.
+- SSTable: ๋์คํฌ์ ์ด๋ฎคํฐ๋ธ Map ๊ตฌํ
+- LSM tree: Skiplist + SSTable. ๋์ ์ฐ๊ธฐ ์ฒ๋ฆฌ๋.
+- B-tree: ๋์คํฌ ๊ธฐ๋ฐ ์๋ฃจ์
. ์ผ๊ด๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฑ๋ฅ.
+- Inverted index: ๋ํ๋จผํธ ์ธ๋ฑ์ฑ์ ์ฌ์ฉ. ๋ฃจ์ฌ์์ ์ฌ์ฉ.
+- Suffix tree: ์คํธ๋ง ํจํด ๊ฒ์.
+- R-tree: ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์ ์ฐพ๊ธฐ์ ๊ฐ์ ๋ค์ฐจ์ ๊ฒ์.
+
+### ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ SQL ๋ฌธ์ ์ด๋ป๊ฒ ์คํ๋๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ์ํคํ
์ฒ๊ฐ ๋ค๋ฅด์ง๋ง ์ด ๋ค์ด์ด๊ทธ๋จ์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ค๊ณ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+
+1๋จ๊ณ - SQL ๋ฌธ์ ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ(์: TCP)์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ก๋ฉ๋๋ค.
+
+2๋จ๊ณ - SQL ๋ฌธ์ command parser๋ก ์ ์ก๋์ด ๊ตฌ๋ฌธ ๋ฐ ์๋ฏธ ๋ถ์์ ๊ฑฐ์น ํ ์ฟผ๋ฆฌ ํธ๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค.
+
+3๋จ๊ณ - ์ฟผ๋ฆฌ ํธ๋ฆฌ๊ฐ optimizer๋ก ์ ์ก๋ฉ๋๋ค. optimizer๊ฐ ์คํ ๊ณํ์ ์์ฑํฉ๋๋ค.
+
+4๋จ๊ณ - ์คํ ๊ณํ์ด executor์๊ฒ ์ ์ก๋ฉ๋๋ค. executor๋ ์ต์คํ์
์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํฉ๋๋ค.
+
+5๋จ๊ณ - Access methods๋ ์คํ์ ํ์ํ ๋ฐ์ดํฐ ํ์นญ ๋ก์ง์ ์ ๊ณตํ์ฌ ์คํ ๋ฆฌ์ง ์์ง์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํฉ๋๋ค.
+
+6๋จ๊ณ - Access methods๋ SQL ๋ฌธ์ ์ฝ๊ธฐ ์ ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ฟผ๋ฆฌ๊ฐ ์ฝ๊ธฐ ์ ์ฉ์ธ ๊ฒฝ์ฐ(SELECT ๋ฌธ), ์ฟผ๋ฆฌ๋ ์ถ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํด buffer manager์๊ฒ ์ ๋ฌ๋ฉ๋๋ค. buffer manager๋ ์บ์ ๋๋ ๋ฐ์ดํฐ ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ต๋๋ค.
+
+7๋จ๊ณ - UPDATE ํน์ INSERT ๋ฌธ์ธ ๊ฒฝ์ฐ, ์ถ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํด transaction manager์๊ฒ ์ ๋ฌํฉ๋๋ค.
+
+8๋จ๊ณ - ํธ๋์ญ์
์ด ์งํ๋๋ ๋์ ๋ฐ์ดํฐ๋ ์ ๊ฒจ ์์ต๋๋ค. ์ด๋ lock manager์ ์ํด ๋ณด์ฅ๋ฉ๋๋ค. ๋ํ ํธ๋์ญ์
์ ACID ํ๋กํผํฐ๋ ๋ณด์ฅํฉ๋๋ค.
+
+### CAP ์ ๋ฆฌ
+
+CAP ์ ๋ฆฌ๋ ์ปดํจํฐ ๊ณผํ์์ ๊ฐ์ฅ ์ ๋ช
ํ ์ฉ์ด ์ค ํ๋์ด์ง๋ง ๊ฐ๋ฐ์๋ง๋ค ์ดํดํ๋ ๋ฐ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ด ์ฉ์ด๊ฐ ๋ฌด์์ด๋ฉฐ ์ ํผ๋์ค๋ฌ์ธ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
+
+
+
+
+
+CAP ์ ๋ฆฌ์ ๋ฐ๋ฅด๋ฉด ๋ถ์ฐ ์์คํ
์ ์ด ์ธ ๊ฐ์ง ๋ณด์ฅ ์ค ๋ ๊ฐ์ง ์ด์์ ๋์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
+
+**Consistency**: ์ผ๊ด์ฑ์ด๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ ๋
ธ๋์ ์ฐ๊ฒฐํ๋ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋์์ ๋ณผ ์ ์๋ค๋ ์๋ฏธ์
๋๋ค.
+
+**Availability**: ๊ฐ์ฉ์ฑ์ด๋ ์ผ๋ถ ๋
ธ๋๊ฐ ๋ค์ด๋๋๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ต์ ๋ฐ๋๋ค๋ ์๋ฏธ์
๋๋ค.
+
+**Partition Tolerance**: ํํฐ์
์ ๋ ๋
ธ๋ ๊ฐ์ ํต์ ๋จ์ ์ ๋ํ๋
๋๋ค. ํํฐ์
๋๋ ๋์ค๋ ์์คํ
์ด ๋คํธ์ํฌ ํํฐ์
์๋ ๋ถ๊ตฌํ๊ณ ๊ณ์ ์๋ํ ์ ์๋ ๋ฅ๋ ฅ์ ์๋ฏธํฉ๋๋ค.
+
+"์
์ค ๋" ๊ณต์์ ์ ์ฉํ ์ ์์ง๋ง **์ด๋ฌํ ๋จ์ํ๋ ์คํด์ ์์ง๊ฐ ์์ต๋๋ค**.
+
+1. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค. CAP ์ ๋ฆฌ๋ง์ผ๋ก ์ ํ์ ์ ๋นํํ๋ ๊ฒ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ์์ ๋จ์ํ AP ์์คํ
์ด๋ผ๋ ์ด์ ๋ง์ผ๋ก ์ฑํ
์ ํ๋ฆฌ์ผ์ด์
์ ์ํด Cassandra๋ฅผ ์ ํํ์ง๋ ์์ต๋๋ค. ์ฑํ
๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๋ฐ ์์ด Cassandra๋ฅผ ๋ฐ๋์งํ ์ต์
์ผ๋ก ๋ง๋๋ ์ข์ ํน์ฑ ๋ชฉ๋ก์ด ์์ต๋๋ค. ๋ ๊น์ด ํ๊ณ ๋ค ํ์๊ฐ ์์ต๋๋ค.
+
+2. "CAP๋ ๋์์ธ ๊ณต๊ฐ์ ๊ทนํ ์ผ๋ถ๋ถ, ์ฆ ํํฐ์
์ด ์์ ๋ ์๋ฒฝํ ๊ฐ์ฉ์ฑ๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๊ฒฝ์ฐ๋ ๋๋ญ
๋๋ค." ๋
ผ๋ฌธ์์ ์ธ์ฉ: CAP Twelve Years Later: How the "Rules" Have Changed.
+
+3. ์ด ์ ๋ฆฌ๋ ์ฝ 100%์ ๊ฐ์ฉ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์๋ฏธํฉ๋๋ค. ๋ณด๋ค ํ์ค์ ์ธ ๋
ผ์๋ ๋คํธ์ํฌ ํํฐ์
์ด ์์ ๋ ์ง์ฐ ์๊ฐ๊ณผ ์ผ๊ด์ฑ ๊ฐ์ ์ ์ถฉ์์
๋๋ค. ์์ธํ ๋ด์ฉ์ PACELC ์ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
+
+**CAP์ ๋ฆฌ๊ฐ ์ค์ ๋ก ์ ์ฉํ๊ฐ์?**
+
+์ ์ถฉ์์ ๋
ผ์ํ ์ ์๋ค๋ ์ ์์ ์ฌ์ ํ ์ ์ฉํ๋ค๊ณ ์๊ฐํ์ง๋ง, ์ด๋ ์ผ๋ถ๋ถ์ผ ๋ฟ์
๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ค๋ฉด ๋ ๊น์ด ํ๊ณ ๋ค์ด์ผ ํฉ๋๋ค.
+
+### ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์คํ ๋ฆฌ์ง์ ์ข
๋ฅ
+
+
+
+
+
+
+### SQL ์ฟผ๋ฆฌ ์๊ฐํ
+
+
+
+
+
+SQL ๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋จ๊ณ๋ก ์คํ๋ฉ๋๋ค.
+
+- SQL๋ฌธ ํ์ฑ๊ณผ ์ ํจ์ฑ ๊ฒ์ฌ
+- SQL์ ๊ด๊ณ๋์(relational algebra) ๊ฐ์ ๋ด๋ถ ํํ์ผ๋ก ๋ณํ
+- ๋ด๋ถ ํํ์ ์ต์ ํํ๊ณ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ํ์ฉํ๋ ์คํ ๊ณํ ์์ฑ
+- ๊ณํ ์คํ ๋ฐ ๊ฒฐ๊ณผ ๋ฐํ
+
+SQL ์คํ์ ๋งค์ฐ ๋ณต์กํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ๋ง์ ๊ณ ๋ ค ์ฌํญ์ ํฌํจํฉ๋๋ค.
+
+- ์ธ๋ฑ์ค ๋ฐ ์บ์ ์ฌ์ฉ
+- ํ
์ด๋ธ ์กฐ์ธ ์์
+- ๋์์ฑ ์ ์ด
+- ํธ๋์ญ์
๊ด๋ฆฌ
+
+### SQL ์ธ์ด
+
+1986๋
, SQL(Structured Query Language)์ด ํ์ค์ด ๋์์ต๋๋ค. ๊ทธ ํ 40๋
๋์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ธ์ด๊ฐ ๋์์ต๋๋ค. ์ต์ ํ์ค(ANSI SQL 2016)์ ์ฝ๋ ๋ฐ๋ ๋ง์ ์๊ฐ์ด ์์๋ ์ ์์ต๋๋ค. ์ด๋ป๊ฒ ๋ฐฐ์ธ ์ ์์๊น์?
+
+
+
+
+
+SQL ์ธ์ด์๋ 5๊ฐ์ง ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค.
+
+- DDL: ๋ฐ์ดํฐ ์ ์ ์ธ์ด. ์: CREATE, ALTER, DROP
+- DQL: ๋ฐ์ดํฐ ์ฟผ๋ฆฌ ์ธ์ด. ์: SELECT
+- DML: ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด. ์: INSERT, UPDATE, DELETE
+- DCL: ๋ฐ์ดํฐ ์ ์ด ์ธ์ด. ์: GRANT, REVOKE
+- TCL: ํธ๋์ญ์
์ ์ด ์ธ์ด. ์: COMMIT, ROLLBACK
+
+๋ฐฑ์๋ ์์ง๋์ด์ ๊ฒฝ์ฐ ๋๋ถ๋ถ์ ์์์ผ ํ ์๋ ์์ต๋๋ค. ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ผ๋ฉด DQL์ ์ ์ดํดํด์ผ ํ ์๋ ์์ต๋๋ค. ์์ ์๊ฒ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ์ฃผ์ ๋ฅผ ์ ํํ์ธ์.
+
+## ์บ์
+
+### ๋ฐ์ดํฐ๋ ์ด๋์๋ ์บ์๋ฉ๋๋ค
+
+์ด ๋ค์ด์ด๊ทธ๋จ์ ์ผ๋ฐ์ ์ธ ์ํคํ
์ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์บ์ํ๋ ์์น๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+
+ํ๋ก์ฐ๋ฅผ ๋ฐ๋ผ **์ฌ๋ฌ ๋ ์ด์ด** ๊ฐ ์์ต๋๋ค.
+
+1. Client apps: HTTP ์๋ต์ ๋ธ๋ผ์ฐ์ ์ ์ํด ์บ์๋ ์ ์์ต๋๋ค. HTTP๋ฅผ ํตํด ์ฒ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด HTTP ํค๋์ ๋ง๋ฃ ์ ์ฑ
๊ณผ ํจ๊ป ๋ฐํ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์์ฒญํ๋ฉด ํด๋ผ์ด์ธํธ ์ฑ์ด ๋จผ์ ๋ธ๋ผ์ฐ์ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
+2. CDN: CDN์ ์ ์ ์น ๋ฆฌ์์ค๋ฅผ ์บ์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๊ทผ์ฒ์ CDN ๋
ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
+3. Load Balancer: ๋ก๋ ๋ฐธ๋ฐ์๋ ๋ฆฌ์์ค๋ ์บ์ํ ์ ์์ต๋๋ค.
+4. Messaging infra: ๋ฉ์์ง ๋ธ๋ก์ปค๊ฐ ๋จผ์ ๋์คํฌ์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ ๋ค์, ์ปจ์๋จธ๋ ์์ ์ ์๋์ ๋ง์ถฐ ๋ฉ์์ง๋ฅผ ๊ฒ์ํฉ๋๋ค. ๋ฆฌํ
์
์ ์ฑ
์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ ์ผ์ ๊ธฐ๊ฐ ๋์ ์นดํ์นด ํด๋ฌ์คํฐ์ ์บ์๋ฉ๋๋ค.
+5. Services: ์๋น์ค์๋ ์ฌ๋ฌ๊ฐ์ ์บ์ ๊ณ์ธต์ด ์์ต๋๋ค. CPU ์บ์์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์บ์์์ ๊ฒ์์ ์๋ํฉ๋๋ค. ๋๋ก๋ ์๋น์ค๊ฐ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ธ์ปจ๋ ๋ ๋ฒจ ์บ์๊ฐ ์์ ์ ์์ต๋๋ค.
+6. Distributed Cache: Redis์ ๊ฐ์ ๋ถ์ฐ ์บ์๋ ์ฌ๋ฌ ์๋น์ค์ ๋ํ key-value ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๊ดํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค ํจ์ฌ ๋ฐ์ด๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
+7. Full-text Search: ๋ํ๋จผํธ ๊ฒ์์ด๋ ๋ก๊ทธ ๊ฒ์์ ์ํด Elastic Search์ ๊ฐ์ ํํ
์คํธ ๊ฒ์์ ์ฌ์ฉํด์ผ ํ ๋๊ฐ ์์ต๋๋ค. ๋ฐ์ดํฐ ์ฌ๋ณธ๋ ๊ฒ์ ์์ง์์ ์ธ๋ฑ์ค๋ฉ๋๋ค.
+8. Database: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์๋ ๋ค์ํ ๋ ๋ฒจ์ ์บ์๊ฐ ์์ต๋๋ค.
+- WAL(Write-ahead Log): ๋ฐ์ดํฐ๋ B ํธ๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ ์ ๋จผ์ WAL์ ๊ธฐ๋ก๋ฉ๋๋ค.
+- Bufferpool: ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ๊ธฐ ์ํด ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์
๋๋ค.
+- Materialized View: ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ์ ์ฅํ์ฌ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
+- Transaction log: ๋ชจ๋ ํธ๋์ญ์
๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์
๋ฐ์ดํธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
+- Replication Log: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ๋ณต์ ์ํ๋ฅผ ๊ธฐ๋กํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
+
+### Redis๋ ์ ๋น ๋ฅธ๊ฐ์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ๊ณผ ๊ฐ์ด 3๊ฐ์ง ์ฃผ์ ์ด์ ๊ฐ ์์ต๋๋ค.
+
+
+
+
+
+
+1. Redis๋ RAM ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง์
๋๋ค. RAM ์ก์ธ์ค๋ ์์์ ๋์คํฌ ์ก์ธ์ค๋ณด๋ค ์ต์ 1000๋ฐฐ ์ด์ ๋น ๋ฆ
๋๋ค.
+2. Redis๋ ์คํ ํจ์จ์ฑ์ ์ํด IO ๋ฉํฐํ๋ ์ฑ๊ณผ ์ฑ๊ธ ์ค๋ ๋ ์ต์คํ์
๋ฃจํ๋ฅผ ํ์ฉํฉ๋๋ค.
+3. Redis๋ ๋ช ๊ฐ์ง ํจ์จ์ ์ธ ๋ก์ฐ ๋ ๋ฒจ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ฉํฉ๋๋ค.
+
+์ง๋ฌธ: ๋ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ์ธ๋ฉ๋ชจ๋ฆฌ ์คํ ๋ฆฌ์ง๋ Memcached์
๋๋ค. Redis์ Memcached์ ์ฐจ์ด์ ์ ์๊ณ ์๋์?
+
+์ด ๋ค์ด์ด๊ทธ๋จ์ ์คํ์ผ์ด ์ด์ ๊ฒ์๋ฌผ๊ณผ ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋์น์ฑ์
จ์ ๊ฒ์
๋๋ค. ์ด๋ ์ชฝ์ ์ ํธํ์๋์ง ์๋ ค์ฃผ์ธ์.
+
+### Redis๋ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
+
+
+
+
+
+
+Redis์๋ ๋จ์ํ ์บ์ฑ ์ด์์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
+
+Redis๋ ๋ค์ด์ด๊ทธ๋จ์ ํ์๋ ๊ฒ์ฒ๋ผ ๋ค์ํ ์๋๋ฆฌ์ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+
+- Session
+
+ Redis๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์๋น์ค ๊ฐ์ ์ฌ์ฉ์ ์ธ์
๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
+
+- Cache
+
+ ํนํ ํซ์คํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ Redis๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ ํ์ด์ง๋ฅผ ์บ์ํ ์ ์์ต๋๋ค.
+
+- Distributed lock
+
+ Redis ์คํธ๋ง์ ์ฌ์ฉํ์ฌ ๋ถ์ฐ ์๋น์ค ๊ฐ์ lock์ ํ๋ํ ์ ์์ต๋๋ค.
+
+- Counter
+
+ ์ข์์ ์, ์กฐํ์๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค.
+
+- Rate limiter
+
+ ํน์ ์ฌ์ฉ์ IP์ ๋ํด rate limiter๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
+
+- Global ID generator
+
+ ๊ธ๋ก๋ฒ ID์ Redis Int๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+
+- Shopping cart
+
+ Redis ํด์๋ฅผ ์ฌ์ฉํ์ฌ ์ฅ๋ฐ๊ตฌ๋์ key-value ์์ ๋ํ๋ผ ์ ์์ต๋๋ค.
+
+- Calculate user retention
+
+ ๋นํธ๋งต์ ์ฌ์ฉํ์ฌ ๋งค์ผ ๋ก๊ทธ์ธํ๋ ์ฌ์ฉ์๋ฅผ ํ์ํ๊ณ ์ฌ์ฉ์ ๋ฆฌํ
์
์ ๊ณ์ฐํ ์ ์์ต๋๋ค.
+
+- Message queue
+
+ ๋ฉ์์ง ํ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+
+- Ranking
+
+ ZSet์ ์ฌ์ฉํ์ฌ ์ํฐํด์ ์ ๋ ฌํ ์ ์์ต๋๋ค.
+
+### ์ฃผ์ ์บ์ฑ ์ ๋ต
+
+๋๊ท๋ชจ ์์คํ
์ ์ค๊ณํ ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์บ์ฑ์ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
+๋ค์์ ์์ฃผ ํ์ฉ๋๋ 5๊ฐ์ง ์บ์ฑ ์ ๋ต์
๋๋ค.
+
+
+
+
+
+
+
+## ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ
+
+### ์ผ๋ฐ์ ์ธ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ ์ด๋ค ๋ชจ์ต์ผ๊น์?
+
+
+
+
+
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์ผ๋ฐ์ ์ธ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+- Load Balancer: ์ด๋ ๊ฒ ํ๋ฉด ๋ค์ด์ค๋ ํธ๋ํฝ์ด ์ฌ๋ฌ ๋ฐฑ์๋ ์๋น์ค์ ๋ถ์ฐ๋ฉ๋๋ค.
+- CDN (Content Delivery Network): CDN์ ๋ ๋น ๋ฅธ ์ ์ก์ ์ํด ์ ์ ์ฝํ
์ธ ๋ฅผ ๋ณด๊ดํ๋ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์๋ฒ ๊ทธ๋ฃน์
๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋จผ์ CDN์์ ์ฝํ
์ธ ๋ฅผ ์ฐพ์ ๋ค์ ๋ฐฑ์๋ ์๋น์ค๋ก ์ด๋ํฉ๋๋ค.
+- API Gateway: ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ด๋ จ ์๋น์ค๋ก ๋ผ์ฐํ
ํฉ๋๋ค. ID ๊ณต๊ธ์์ ํต์ ํ๊ณ ์๋น์ค๋ฅผ ๊ฒ์ํฉ๋๋ค.
+- Identity Provider: ์ฌ์ฉ์์ ๋ํ ์ธ์ฆ๊ณผ ์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
+- Service Registry & Discovery: ์ด ์ปดํฌ๋ํธ์์ ๋ง์ดํฌ๋ก์๋น์ค ๋ฑ๋ก ๋ฐ ๊ฒ์์ด ์ด๋ฃจ์ด์ง๊ณ , API ๊ฒ์ดํธ์จ์ด๋ ์ด ์ปดํฌ๋ํธ์์ ํต์ ํ ๊ด๋ จ ์๋น์ค๋ฅผ ์ฐพ์ต๋๋ค.
+- Management: ์ด ์ปดํฌ๋ํธ๋ ์๋น์ค ๋ชจ๋ํฐ๋ง์ ๋ด๋นํฉ๋๋ค.
+- Microservices: ๋ง์ดํฌ๋ก์๋น์ค๋ ์๋ก ๋ค๋ฅธ ๋๋ฉ์ธ์์ ์ค๊ณ ๋ฐ ๋ฐฐํฌ๋ฉ๋๋ค. ๊ฐ ๋๋ฉ์ธ์๋ ์์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ต๋๋ค. API ๊ฒ์ดํธ์จ์ด๋ REST API ๋๋ ๊ธฐํ ํ๋กํ ์ฝ์ ํตํด ๋ง์ดํฌ๋ก์๋น์ค์ ํต์ ํ๊ณ , ๋์ผํ ๋๋ฉ์ธ ๋ด์ ๋ง์ดํฌ๋ก์๋น์ค๋ RPC(Remote Procedure Call)๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ํต์ ํฉ๋๋ค.
+
+๋ง์ดํฌ๋ก์๋น์ค์ ์ด์
+
+- ๋น ๋ฅด๊ฒ ์ค๊ณ, ๋ฐฐํฌํ๊ณ ์ํ์ ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค.
+- ๊ฐ ๋๋ฉ์ธ์ ์ ๋ด ํ์์ ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
+- ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ ๋๋ฉ์ธ์์ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ์ปค์คํฐ๋ง์ด์ฆํ๊ณ ๋ ๋์ ์ง์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
+
+### ๋ง์ดํฌ๋ก์๋น์ค ๋ชจ๋ฒ์ฌ๋ก
+
+์ฌ์ง ํ ์ฅ์ด ์ฒ ๋ง๋ ๋ง๋ณด๋ค ๋ซ์ต๋๋ค. ๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์ ์ํ 9๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก์
๋๋ค.
+
+
+
+
+
+
+๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ฐํ ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
+
+1. ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ง๋ค ๋ณ๋์ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ์ฌ์ฉ
+2. ์ฝ๋์ ์์ฑ๋๋ฅผ ๋น์ทํ ์์ค์ผ๋ก ์ ์ง
+3. ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ง๋ค ๋ณ๋๋ก ๋น๋
+4. ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ๋จ์ผ ์ฑ
์ ํ ๋น
+5. ์ปจํ
์ด๋์ ๋ฐฐํฌ
+6. ์คํ
์ดํธ๋ฆฌ์ค ์๋น์ค ์ค๊ณ
+7. ๋๋ฉ์ธ ๋๋ฆฌ๋ธ ์ค๊ณ ๋์
+8. ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋ ์ค๊ณ
+9. ๋ง์ดํฌ๋ก์๋น์ค ์ค์ผ์คํธ๋ ์ด์
+
+### ๋ง์ดํฌ๋ก์๋น์ค์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์คํ์ ๋ฌด์์ธ๊ฐ์
+
+์๋์์ ๊ฐ๋ฐ ๋จ๊ณ์ ํ๋ก๋์
๋จ๊ณ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ์ ์คํ์ ๋ณด์ฌ์ฃผ๋ ๋ค์ด์ด๊ทธ๋จ์ ํ์ธํ ์ ์์ต๋๋ค.
+
+
+
+
+
+
+โถ๏ธ ๐๐ซ๐-๐๐ซ๐จ๐๐ฎ๐๐ญ๐ข๐จ๐ง
+
+- Define API - ์ด๋ ๊ฒ ํ๋ฉด ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ์ ๊ณ์ฝ์ด ์ฑ๋ฆฝ๋ฉ๋๋ค. ์ด๋ฅผ ์ํด Postman, OpenAPI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+- Development - ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ Node.js๋ react๊ฐ, ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ์๋ฐ/ํ์ด์ฌ/go๊ฐ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ API ์ ์์ ๋ฐ๋ผ API ๊ฒ์ดํธ์จ์ด์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
+- Continuous Integration - ์๋ํ๋ ํ
์คํธ๋ฅผ ์ํด JUnit๊ณผ Jenkins๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฝ๋๋ ๋์ปค ์ด๋ฏธ์ง๋ก ํจํค์ง๋์ด ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
+
+โถ๏ธ ๐๐ซ๐จ๐๐ฎ๐๐ญ๐ข๐จ๐ง
+
+- ๋ก๋ ๋ฐธ๋ฐ์์๋ NGinx๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค. Cloudflare๋ CDN(Content Delivery Network)์ ์ ๊ณตํฉ๋๋ค.
+- API Gateway - ๊ฒ์ดํธ์จ์ด์๋ ์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๊ณ , ์๋น์ค ๊ฒ์์๋ ์ ๋ ์นด/์ฃผํคํผ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+- ๋ง์ดํฌ๋ก์๋น์ค๋ ํด๋ผ์ฐ๋์ ๋ฐฐํฌ๋ฉ๋๋ค. AWS, Microsoft Azure, Google GCP ์ค์์ ์ ํํ ์ ์์ต๋๋ค.
+Cache and Full-text Search - Redis๋ key-value ์์ ์บ์ฑํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ ํ์
๋๋ค. ํํ
์คํธ ๊ฒ์์๋ Elasticsearch๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
+- Communications - ์๋น์ค๊ฐ ์๋ก ํต์ ํ๊ธฐ ์ํด์๋ ๋ฉ์์ง ์ธํ๋ผ๋ก ์นดํ์นด ํน์ RPC๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+- Persistence - ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ MySQL ๋๋ PostgreSQL์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ฐ์ฒด ์คํ ๋ฆฌ์ง์๋ Amazon S3์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ wide-column ์คํ ๋ฆฌ์ง๋ก Cassandra๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
+- Management & Monitoring - ์๋ง์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ด์ ๋๊ตฌ๋ก Prometheus, Elastic Stack, Kubernetes๊ฐ ์์ต๋๋ค.
+
+### ์นดํ์นด๊ฐ ๋น ๋ฅธ ์ด์
+
+์นดํ์นด ์ฑ๋ฅ์ ๊ธฐ์ฌํ ๋ง์ ๋์์ธ ๊ฒฐ์ ์ด ์์ต๋๋ค. ์ด ๊ธ์์๋ ๋ ๊ฐ์ง์ ์ด์ ์ ๋ง์ถ๊ฒ ์ต๋๋ค. ์ด ๋ ๊ฐ์ง๊ฐ ๊ฐ์ฅ ํฐ ๋น์ค์ ์ฐจ์งํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
+
+
+
+
+
+1. ์ฒซ ๋ฒ์งธ๋ ์นดํ์นด๊ฐ ์์ฐจ์ I/O์ ์์กดํ๋ค๋ ์ ์
๋๋ค.
+2. ์นดํ์นด์ ์ฑ๋ฅ ์ด์ ์ ์ ๊ณตํ๋ ๋ ๋ฒ์งธ ์ค๊ณ ์ ํ์ ํจ์จ์ฑ์ ์ด์ ์ ๋ง์ถ ์ ๋ก ์นดํผ ์์น์
๋๋ค.
+
+์ด ๋ค์ด์ด๊ทธ๋จ์ ํ๋ก๋์์ ์ปจ์๋จธ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ๋ฐฉ์๊ณผ ์ ๋ก ์นดํผ์ ์๋ฏธ๋ฅผ ์ค๋ช
ํฉ๋๋ค.
+
+- 1.1 - 1.3๋จ๊ณ: ํ๋ก๋์๊ฐ ๋์คํฌ์ ๋ฐ์ดํฐ ์ฐ๊ธฐ
+- 2๋จ๊ณ: ์ปจ์๋จธ๊ฐ ์ ๋ก ์นดํผ ์์ด ๋ฐ์ดํฐ ์ฝ๊ธฐ
+
+2.1 ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์์ OS ์บ์๋ก ๋ก๋๋ฉ๋๋ค.
+
+2.2 ๋ฐ์ดํฐ๊ฐ OS ์บ์์์ ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๋ณต์ฌ๋ฉ๋๋ค.
+
+2.3 ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ๋ฅผ ์์ผ ๋ฒํผ์ ๋ณต์ฌํฉ๋๋ค.
+
+2.4 ๋ฐ์ดํฐ๊ฐ ์์ผ ๋ฒํผ์์ ๋คํธ์ํฌ ์นด๋๋ก ๋ณต์ฌ๋ฉ๋๋ค.
+
+2.5 ๋คํธ์ํฌ ์นด๋๊ฐ ์ปจ์๋จธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
+
+
+- 3๋จ๊ณ: ์ปจ์๋จธ๋ ์ ๋ก ์นดํผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค.
+
+3.1: ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์์ OS ์บ์๋ก ๋ก๋๋ฉ๋๋ค.
+3.2 OS ์บ์๋ sendfile() ์ปค๋งจ๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ ์นด๋์ ์ง์ ๋ณต์ฌํฉ๋๋ค.
+3.3 ๋คํธ์ํฌ ์นด๋๊ฐ ์ปจ์๋จธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
+
+์ ๋ก ์นดํผ๋ ์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์คํธ์ ์ปค๋ ์ปจํ
์คํธ ์ฌ์ด์ ์ฌ๋ฌ ๋ฐ์ดํฐ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๋ ์์ปท์
๋๋ค.
+
+## ๊ฒฐ์ ์์คํ
+
+### ๊ฒฐ์ ์์คํ
์ ์ด๋ป๊ฒ ๋ฐฐ์ฐ๋์?
+
+
+
+
+
+### ์ ์ฉ์นด๋๋ฅผ "์ํ์์ ๊ฐ์ฅ ์์ต์ฑ์ด ๋์ ์ํ"์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? ๋น์/๋ง์คํฐ์นด๋๋ ์ด๋ป๊ฒ ์์ต์ ์ฐฝ์ถํ๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์ ์ฉ์นด๋ ๊ฒฐ์ ํ๋ก์ฐ์ ์ด์ฝ๋
ธ๋ฏน์ค๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+1.์นด๋ ์์ ์๊ฐ ์ ํ์ ๊ตฌ๋งคํ๊ธฐ ์ํด ํ๋งค์์๊ฒ 100๋ฌ๋ฌ๋ฅผ ์ง๋ถํฉ๋๋ค.
+
+2.ํ๋งค์๋ ํ๋งค๋์ด ๋ง์ ์ ์ฉ์นด๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ต์ ์ป๊ณ ๊ฒฐ์ ์๋น์ค ์ ๊ณต์ ๋ํด ๋ฐ๊ธ์ฌ์ ์นด๋ ๋คํธ์ํฌ์ ๋ณด์์ ํด์ผ ํฉ๋๋ค. ๋งค์
์ํ์ ํ๋งค์์ "merchant discount fee"๋ผ๊ณ ํ๋ ์์๋ฃ๋ฅผ ์ค์ ํฉ๋๋ค.
+
+3 - 4. ๋งค์
์ํ์ ๊ตํ ์์๋ฃ๋ก $0.25๋ฅผ ์์ ํ๊ณ , $1.75๋ ํ์ ์์๋ฃ๋ก ๋ฐ๊ธ ์ํ์ ์ง๋ถํฉ๋๋ค. merchant discount fee๋ก ํ์ ์์๋ฃ๋ฅผ ์ถฉ๋นํด์ผ ํฉ๋๋ค.
+
+ ๊ฐ ๋ฐ๊ธ ์ํ์ด ๊ฐ ๊ฐ๋งน์ ๊ณผ ์์๋ฃ๋ฅผ ํ์ํ๋ ๊ฒ์ด ํจ์จ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ๊ตํ ์์๋ฃ๋ ์นด๋ ๋คํธ์ํฌ์์ ์ค์ ํฉ๋๋ค.
+
+5.์นด๋ ๋คํธ์ํฌ๋ ๊ฐ ์ํ๊ณผ network assessments and fees๋ฅผ ์ค์ ํ๊ณ , ์ํ์ ๋งค๋ฌ ์นด๋ ๋คํธ์ํฌ์ ์๋น์ค ๋น์ฉ์ ์ง๋ถํฉ๋๋ค. ์๋ฅผ ๋ค์ด, VISA๋ ์ค์์ดํํ ๋๋ง๋ค 0.11%์ ํ๊ฐ ์์๋ฃ์ $0.0195์ ์ฌ์ฉ ์์๋ฃ๋ฅผ ๋ถ๊ณผํฉ๋๋ค.
+
+6.์นด๋ ์์ ์๋ ๋ฐ๊ธ ์ํ์ ์๋น์ค ๋น์ฉ์ ์ง๋ถํฉ๋๋ค.
+
+์ ๋ฐ๊ธ ์ํ์ด ๋ณด์์ ๋ฐ์์ผ ํ๋์?
+
+- ์นด๋ ์์ ์ฃผ๊ฐ ๋ฐ๊ธ์ฌ์ ๋๊ธ์ ์ง๋ถํ์ง ์๋๋ผ๋ ๋ฐ๊ธ์ฌ๋ ํ๋งค์์๊ฒ ๋๊ธ์ ์ง๋ถํฉ๋๋ค.
+- ์นด๋ ์์ง์๊ฐ ๋ฐ๊ธ์ฌ์ ๋๊ธ์ ์ง๋ถํ๊ธฐ ์ ์ ๋ฐ๊ธ์ฌ๊ฐ ํ๋งค์์๊ฒ ๋๊ธ์ ๋จผ์ ์ง๋ถํฉ๋๋ค.
+- ๋ฐ๊ธ์ฌ๋ ๊ณ ๊ฐ ๊ณ์ข ๊ด๋ฆฌ, ๋ช
์ธ์ ์ ๊ณต, ์ฌ๊ธฐ ํ์ง, ์ํ ๊ด๋ฆฌ, ์ฒญ์ฐ ๋ฐ ๊ฒฐ์ ๋ฑ ๊ธฐํ ์ด์ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
+
+### ์์ ์์ ์ฐ๋ฆฌ๊ฐ ์ ์ฉ์นด๋๋ฅผ ๊ธ์ ๋, VISA๋ ์ด๋ป๊ฒ ์๋ํ๋์?
+
+
+
+
+
+
+๋น์, ๋ง์คํฐ์นด๋, ์๋ฉ๋ฆฌ์นธ ์ต์คํ๋ ์ค๋ ์๊ธ ์ฒญ์ฐ ๋ฐ ์ ์ฐ์ ์ํ ์นด๋ ๋คํธ์ํฌ ์ญํ ์ ํฉ๋๋ค. ์นด๋ ๋งค์
์ํ๊ณผ ์นด๋ ๋ฐ๊ธ ์ํ์ ์๋ก ๋ค๋ฅผ ์ ์์ผ๋ฉฐ, ์ค์ ๋ก๋ ์ข
์ข
๋ค๋ฆ
๋๋ค. ์ํ์ด ์ค๊ฐ์ ์์ด ํ๋์ฉ ๊ฑฐ๋๋ฅผ ์ ์ฐํ๋ค๋ฉด, ๊ฐ ์ํ์ ๋ค๋ฅธ ๋ชจ๋ ์ํ๊ณผ ๊ฑฐ๋๋ฅผ ์ ์ฐํด์ผ ํฉ๋๋ค. ์ด๋ ๋งค์ฐ ๋นํจ์จ์ ์
๋๋ค.
+
+์ ๋ค์ด์ด๊ทธ๋จ์ ์ ์ฉ ์นด๋ ๊ฒฐ์ ํ๋ก์ธ์ค์์ VISA์ ์ญํ ์ ๋ณด์ฌ์ค๋๋ค. ๋ ๊ฐ์ง ํ๋ก์ฐ๊ฐ ๊ด๋ จ๋์ด ์์ต๋๋ค. ์น์ธ ํ๋ฆ์ ๊ณ ๊ฐ์ด ์ ์ฉ์นด๋๋ฅผ ์ค์์ดํํ ๋ ๋ฐ์ํฉ๋๋ค. ์บก์ฒ์ ์ ์ฐ ํ๋ก์ฐ๋ ์์ ์ด ํ๋ฃจ๊ฐ ๋๋ ๋ ๋ฐ์ํฉ๋๋ค.
+
+- ๊ฑฐ๋ ์น์ธ ํ๋ก์ฐAuthorization Flow
+
+0๋จ๊ณ: ์นด๋ ๋ฐ๊ธ ์ํ์ด ๊ณ ๊ฐ์๊ฒ ์ ์ฉ์นด๋๋ฅผ ๋ฐ๊ธํฉ๋๋ค.
+
+1๋จ๊ณ: ์นด๋ ์์ ์๊ฐ ์ ํ์ ๊ตฌ๋งคํ๊ธฐ ์ํด ์์ ์ POS(Point of Sale) ๋จ๋ง๊ธฐ์์ ์ ์ฉ์นด๋๋ฅผ ์ค์์ดํํฉ๋๋ค.
+
+2๋จ๊ณ: POS ๋จ๋ง๊ธฐ๋ POS ๋จ๋ง๊ธฐ๋ฅผ ์ ๊ณตํ ๋งค์
์ํ์ผ๋ก ๊ฑฐ๋๋ฅผ ์ ์กํฉ๋๋ค.
+
+3, 4๋จ๊ณ: ๋งค์
์ํ์ ๊ฑฐ๋๋ฅผ ์นด๋ ๋คํธ์ํฌ๋ก ์ ์กํ๋ฉฐ, ์ด๋ฅผ ์นด๋ ์คํด์ด๋ผ๊ณ ๋ ํฉ๋๋ค. ์นด๋ ๋คํธ์ํฌ๋ ์น์ธ์ ์ํด ๋ฐ๊ธ ์ํ์ผ๋ก ๊ฑฐ๋๋ฅผ ์ ์กํฉ๋๋ค.
+
+4.1, 4.2, 4.3๋จ๊ณ: ํธ๋์ญ์
์ด ์น์ธ๋๋ฉด ๋ฐ๊ธ ์ํ์ ์๊ธ์ ๋๊ฒฐํฉ๋๋ค. ์น์ธ ๋๋ ๊ฑฐ๋ถ๊ฐ ๋งค์
์ํ์ ๋ค์ ์ ์ก๋๊ณ POS ๋จ๋ง๊ธฐ๋ก๋ ์ ์ก๋ฉ๋๋ค.
+
+- ์บก์ฒ์ ์ ์ฐ ํ๋ก์ฐCapture and Settlement Flow
+
+1, 2๋จ๊ณ: ํ๋งค์๋ ํ๋ฃจ๊ฐ ๋๋ ๋ ๋์ ๋ฐ์ผ๋ ค๊ณ POS ๋จ๋ง๊ธฐ์์ '๋งค์
'์ ๋๋ฆ
๋๋ค. ํธ๋์ญ์
์ ๋งค์
์ํ์๊ฒ ์ผ๊ด์ ์ผ๋ก ์ ์ก๋ฉ๋๋ค. ๋งค์
์ํ์ ํธ๋์ญ์
์ด ํฌํจ๋ ๋ฐฐ์น ํ์ผ์ ์นด๋ ๋คํธ์ํฌ๋ก ์ ์กํฉ๋๋ค.
+
+3๋จ๊ณ: ์นด๋ ๋คํธ์ํฌ๋ ์ฌ๋ฌ ๋งค์
์ํ์ผ๋ก๋ถํฐ ์์งํ ๊ฑฐ๋์ ๋ํด ์ ์ฐ์ ์ํํ๊ณ ์ ์ฐ ํ์ผ์ ์ฌ๋ฌ ๋ฐ๊ธ ์ํ์ผ๋ก ์ ์กํฉ๋๋ค.
+
+4๋จ๊ณ: ๋ฐ๊ธ ์ํ์ ์ ์ฐ ํ์ผ์ ์ ํ์ฑ์ ํ์ธํ๊ณ ๊ด๋ จ ๋งค์
์ํ์ผ๋ก ์๊ธ์ ์ด์ฒดํฉ๋๋ค.
+
+5๋จ๊ณ: ๊ทธ๋ฌ๋ฉด ๋งค์
์ํ์ด ํ๋งค์์ ์ํ์ผ๋ก ์ก๊ธํฉ๋๋ค.
+
+4๋จ๊ณ: ์นด๋ ๋คํธ์ํฌ๋ ์๋ก ๋ค๋ฅธ ์นด๋ ๋ฐ๊ธ ์ํ์ ๊ฑฐ๋๋ฅผ ์ ์ฐํฉ๋๋ค. ์ ์ฐ์ ์ํธ ์์ ๊ฑฐ๋๋ฅผ ๊ฒฐ์ฐํ๋ ๊ณผ์ ์ผ๋ก, ์ด ๊ฑฐ๋ ์๋ฅผ ์ค์
๋๋ค.
+
+์ด ๊ณผ์ ์์ ์นด๋ ๋คํธ์ํฌ๋ ๊ฐ ์ํ๊ณผ ๋ํํด์ผ ํ๋ ๋ถ๋ด์ ๋ ์๊ณ ๊ทธ ๋๊ฐ๋ก ์๋น์ค ์์๋ฃ๋ฅผ ๋ฐ์ต๋๋ค.
+
+### ์ธ๊ณ์ ๊ฒฐ์ ์์คํ
์๋ฆฌ์ฆ(1๋ถ): ์ธ๋์ ํตํฉ ๊ฒฐ์ ์ธํฐํ์ด์ค(UPI)
+
+
+UPI๋ ๋ฌด์์ธ๊ฐ์? UPI๋ ์ธ๋ ๊ตญ๋ฆฝ๊ฒฐ์ ๊ณต์ฌ์์ ๊ฐ๋ฐํ ์ค์๊ฐ ์ฆ์ ๊ฒฐ์ ์์คํ
์
๋๋ค.
+
+ํ์ฌ ์ธ๋์์ ๋์งํธ ์๋งค ๊ฑฐ๋์ 60%๋ฅผ ์ฐจ์งํ๊ณ ์์ต๋๋ค.
+
+UPI = ๊ฒฐ์ ๋งํฌ์
์ธ์ด + ์ํธ ์ด์ฉ ๊ฐ๋ฅํ ๊ฒฐ์ ํ์ค
+
+
+
+
+
+
+
+## DevOps
+
+### DevOps vs SRE vs Platform Engineering ๋ฌด์์ด ๋ค๋ฅธ๊ฐ์?
+
+๋ฐ๋ธ์ต์ค, SRE, ํ๋ซํผ ์์ง๋์ด๋ง์ ๊ฐ๋
์ ์๋ก ๋ค๋ฅธ ์๊ธฐ์ ๋ฑ์ฅํ์ฌ ๋ค์ํ ๊ฐ์ธ๊ณผ ์กฐ์ง์ ์ํด ๋ฐ์ ํด ์์ต๋๋ค.
+
+
+
+
+
+๋ฐ๋ธ์ต์ค๋ผ๋ ๊ฐ๋
์ 2009๋
์ ์์ผ ์ปจํผ๋ฐ์ค์์ Patrick Debois์ Andrew Shafer์ ์ํด ์๊ฐ๋์์ต๋๋ค. ์ด๋ค์ ์ ์ฒด ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด์ ๋ํ ๊ณต๋ ์ฑ
์๊ณผ ํ์
๋ฌธํ๋ฅผ ์ฅ๋ คํจ์ผ๋ก์จ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ์ด์ ๊ฐ์ ๊ฐ๊ทน์ ์ขํ๊ณ ์ ํ์ต๋๋ค.
+
+SRE(Site Reliability Engineering)๋ 2000๋
๋ ์ด๋ฐ ๊ตฌ๊ธ์์ ๋๊ท๋ชจ ๋ณต์กํ ์์คํ
๊ด๋ฆฌ์ ์ด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฒ๋์์ต๋๋ค. ๊ตฌ๊ธ์ ์๋น์ค์ ์์ ์ฑ๊ณผ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด Borg ํด๋ฌ์คํฐ ๊ด๋ฆฌ ์์คํ
, Monarch ๋ชจ๋ํฐ๋ง ์์คํ
๊ณผ ๊ฐ์ SRE ์ค์ต ๋ฐ ๋๊ตฌ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
+
+ํ๋ซํผ ์์ง๋์ด๋ง์ SRE ์์ง๋์ด๋ง์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ต๊ทผ ๊ฐ๋
์
๋๋ค. ํ๋ซํผ ์์ง๋์ด๋ง์ ์ ํํ ๊ธฐ์์ ๋ช
ํํ์ง ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์ ํ ๊ฐ๋ฐ์ ์ํ ํฌ๊ด์ ์ธ ํ๋ซํผ์ ์ ๊ณตํ๊ณ ์ ์ฒด ์ฌ์
๊ด์ ์ ์ง์ํ๋ ๋ฐ ์ด์ ์ ๋ DevOps์ SRE ๊ดํ์ ํ์ฅ์ผ๋ก ์ดํด๋ฉ๋๋ค.
+
+์ด๋ฌํ ๊ฐ๋
์ด ์๋ก ๋ค๋ฅธ ์๊ธฐ์ ๋ฑ์ฅํ๋ค๋ ์ ์ ์ฃผ๋ชฉํ ํ์๊ฐ ์์ต๋๋ค. ์ด ๊ฐ๋
๋ค์ ๋ชจ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ์ง์์ ์ธ ํ์
, ์๋ํ, ํจ์จ์ฑ ๊ฐ์ ์ด๋ผ๋ ๊ณตํต ๋ชฉํ๋ฅผ ๋ฐํ์ผ๋ก ํฉ๋๋ค.
+
+### k8s(Kubernetes)๋ ๋ฌด์์ธ๊ฐ์?
+
+K8s๋ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
์์คํ
์
๋๋ค. ์ปจํ
์ด๋ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์์คํ
์ ์ค๊ณ๋ ๊ตฌ๊ธ์ ๋ด๋ถ ์์คํ
์ธ Borg์ ์ํฅ์ ๋ง์ด ๋ฐ์์ต๋๋ค.
+
+
+
+
+
+k8s ํด๋ฌ์คํฐ๋ ์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ๋
ธ๋๋ผ๊ณ ํ๋ ์ผ๋ จ์ ์์ปค ๋จธ์ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ชจ๋ ํด๋ฌ์คํฐ์๋ ํ๋ ์ด์์ ์์ปค ๋
ธ๋๊ฐ ์์ต๋๋ค.
+
+์์ปค ๋
ธ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ํฌ๋ก๋์ ์ปดํฌ๋ํธ์ธ ํ๋๋ฅผ ํธ์คํ
ํฉ๋๋ค. ์ปจํธ๋กค ํ๋ ์ธ์ ํด๋ฌ์คํฐ์ ์์ปค ๋
ธ๋์ ํ๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ํ๋ก๋์
ํ๊ฒฝ์์ ์ปจํธ๋กค ํ๋ ์ธ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๋์ ์ปดํจํฐ์์ ์คํ๋๋ฉฐ, ํด๋ฌ์คํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๋
ธ๋๋ฅผ ์คํํ์ฌ ๋ด๊ฒฐํจ์ฑ(tolerance)๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํฉ๋๋ค.
+
+- Control Plane ์ปดํฌ๋ํธ
+
+1. API Server
+
+ API ์๋ฒ๋ k8s ํด๋ฌ์คํฐ์ ๋ชจ๋ ์ปดํฌ๋ํธ์ ํต์ ํฉ๋๋ค. ํ๋์ ๋ํ ๋ชจ๋ ์์
์ API ์๋ฒ์ ํต์ ํ์ฌ ์คํ๋ฉ๋๋ค.
+
+2. Scheduler
+
+ ์ค์ผ์ค๋ฌ๋ ํ๋ ์ํฌ๋ก๋๋ฅผ ๊ฐ์ํ๊ณ ์๋ก ์์ฑ๋ ํ๋์ ๋ก๋๋ฅผ ํ ๋นํฉ๋๋ค.
+
+3. Controller Manager
+
+ ์ปจํธ๋กค๋ฌ ๋งค๋์ ๋ ๋
ธ๋ ์ปจํธ๋กค๋ฌ, ์ก ์ปจํธ๋กค๋ฌ, ์๋ํฌ์ธํธ์ฌ๋ผ์ด์ค ์ปจํธ๋กค๋ฌ, ์๋น์ค ์ด์นด์ดํธ ์ปจํธ๋กค๋ฌ๋ฅผ ํฌํจํ ์ปจํธ๋กค๋ฌ๋ฅผ ์คํํฉ๋๋ค.
+
+4. Etcd
+
+ etcd๋ ๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ์ดํฐ์ ๋ํ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ฐฑ์
์คํ ๋ฆฌ์ง๋ก ์ฌ์ฉ๋๋ key-value ์คํ ๋ฆฌ์ง์
๋๋ค.
+
+- Nodes
+
+1. Pod
+
+ ํ๋๋ ์ปจํ
์ด๋ ๊ทธ๋ฃน์ผ๋ก, k8s๊ฐ ๊ด๋ฆฌํ๋ ๊ฐ์ฅ ์์ ๋จ์์
๋๋ค. ํ๋์๋ ํ๋ ๋ด์ ๋ชจ๋ ์ปจํ
์ด๋์ ๋จ์ผ IP ์ฃผ์๊ฐ ์ ์ฉ๋ฉ๋๋ค.
+
+2. Kubelet
+
+ ํด๋ฌ์คํฐ์ ๊ฐ ๋
ธ๋์์ ์คํ๋๋ ์์ด์ ํธ์
๋๋ค. ์ปจํ
์ด๋๊ฐ ํ๋์์ ์คํ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
+
+3. Kube Proxy
+
+ Kube-proxy๋ ํด๋ฌ์คํฐ์ ๊ฐ ๋
ธ๋์์ ์คํ๋๋ ๋คํธ์ํฌ ํ๋ก์์
๋๋ค. ์๋น์ค์์ ๋
ธ๋๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ผ์ฐํ
ํฉ๋๋ค. ์์
์์ฒญ์ ์ฌ๋ฐ๋ฅธ ์ปจํ
์ด๋๋ก ์ ๋ฌํฉ๋๋ค.
+
+### Docker vs Kubernetes ์ด๋ค๊ฒ์ ์ฌ์ฉํด์ผ ํ๋์?
+
+
+
+
+
+
+๋์ปคDocker๋ ๋ฌด์์ธ๊ฐ์?
+
+๋์ปค๋ ๊ฒฉ๋ฆฌ๋ ์ปจํ
์ด๋์์ ์ ํ๋ฆฌ์ผ์ด์
์ ํจํค์ง, ๋ฐฐํฌ ๋ฐ ์คํํ ์ ์๋ ์คํ ์์ค ํ๋ซํผ์
๋๋ค. ์ปจํ
์ด๋ํ์ ์ค์ ์ ๋์ด ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ทธ ์ข
์์ฑ์ ์บก์ํํ๋ ๊ฒฝ๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
+
+Kubernetes๋ ๋ฌด์์ธ๊ฐ์?
+
+K8s๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ Kubernetes๋ ์คํ ์์ค ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
ํ๋ซํผ์
๋๋ค. ๋
ธ๋ ํด๋ฌ์คํฐ ์ ๋ฐ์์ ์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐฐํฌ, ์ค์ผ์ผ๋ง, ๊ด๋ฆฌ๋ฅผ ์๋ํํ๊ธฐ ์ํ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
+
+๋ ๊ฐ์ง๊ฐ ์๋ก ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ์?
+
+Docker: ๋์ปค๋ ๋จ์ผ ์ด์ ์ฒด์ ํธ์คํธ์ ๊ฐ๋ณ ์ปจํ
์ด๋ ์์ค์์ ์๋ํฉ๋๋ค.
+
+๊ฐ ํธ์คํธ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํด์ผ ํ๋ฉฐ ์ฌ๋ฌ ๊ด๋ จ ์ปจํ
์ด๋์ ๋ํ ๋คํธ์ํฌ, ๋ณด์ ์ ์ฑ
, ์คํ ๋ฆฌ์ง๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋ณต์กํ ์ ์์ต๋๋ค.
+
+Kubernetes: ์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ฌ์คํฐ ๋ ๋ฒจ์์ ์๋ํฉ๋๋ค. ์ฌ๋ฌ ํธ์คํธ์ ๊ฑธ์ณ ์ฌ๋ฌ ์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ด๋ฆฌํ๋ฉฐ, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์ค์ผ์ผ๋ง, ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ๋ ์ํ ๋ณด์ฅ๊ณผ ๊ฐ์ ์์
์ ๋ํ ์๋ํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
+
+๊ฐ๋จํ ๋งํด, ๋์ปค๋ ์ปจํ
์ด๋ํ ๋ฐ ๊ฐ๋ณ ํธ์คํธ์์ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ๋ฐ ์ค์ ์ ๋๋ ๋ฐ๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๋ ํธ์คํธ ํด๋ฌ์คํฐ ์ ์ฒด์์ ์ปจํ
์ด๋๋ฅผ ๋๊ท๋ชจ๋ก ๊ด๋ฆฌํ๊ณ ์กฐ์ ํ๋ ๋ฐ ํนํ๋์ด ์์ต๋๋ค.
+
+### Docker๋ ์ด๋ป๊ฒ ์๋ํ๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ๋์ปค์ ์ํคํ
์ฒ์ "docker build", "docker pull", "docker run" ์ ์คํํ ๋ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+๋์ปค ์ํคํ
์ฒ์๋ 3๊ฐ์ง ์ปดํฌ๋ํธ๊ฐ ์์ต๋๋ค.
+
+- Docker client
+
+ ๋์ปค ํด๋ผ์ด์ธํธ๊ฐ ๋์ปค ๋ฐ๋ชฌ๊ณผ ํต์ ํฉ๋๋ค.
+
+- Docker host
+
+ ๋์ปค ๋ฐ๋ชฌ์ ๋์ปค API ์์ฒญ์ ์์ ํ๊ณ ์ด๋ฏธ์ง, ์ปจํ
์ด๋, ๋คํธ์ํฌ, ๋ณผ๋ฅจ ๊ฐ์ ๋์ปค ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
+
+- Docker registry
+
+ ๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํฉ๋๋ค. ๋์ปค Hub๋ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ ๊ณต์ฉ ๋ ์ง์คํธ๋ฆฌ์
๋๋ค.
+
+"docker run" ์ปค๋งจ๋๋ฅผ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
+
+ 1. ๋์ปค๋ ๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
+ 1. ๋์ปค๊ฐ ์ ์ปจํ
์ด๋๋ฅผ ์์ฑํฉ๋๋ค.
+ 1. ๋์ปค๋ ์ปจํ
์ด๋์ ์ฝ๊ธฐ-์ฐ๊ธฐ ํ์ผ์์คํ
์ ํ ๋นํฉ๋๋ค.
+ 1. ๋์ปค๋ ์ปจํ
์ด๋๋ฅผ ๋ํดํธ ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
+ 1. ๋์ปค๊ฐ ์ปจํ
์ด๋๋ฅผ ์์ํฉ๋๋ค.
+
+## GIT
+
+### Git Commands ์๋ ๋ฐฉ์
+
+์ฐ์ ์ฝ๋๊ฐ ์ด๋์ ์ ์ฅ๋์ด ์๋์ง ํ์
ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์น๋ Github๊ณผ ๊ฐ์ ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ก์ปฌ ์ปดํจํฐ ๋ ๊ณณ ๋ฟ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ํ์ง๋ง ์ด๋ ์ ํํ์ง ์์ต๋๋ค. Git์ ์ปดํจํฐ์ 3๊ฐ์ ๋ก์ปฌ ์ ์ฅ์๋ฅผ ์ ์งํ๋ฏ๋ก ์ฝ๋๊ฐ ๋ค ๊ณณ์์ ๋ฐ๊ฒฌ๋ ์ ์์ต๋๋ค.
+
+
+
+
+
+
+- Working directory: ํ์ผ์ ํธ์งํ๋ ์์น
+- Staging area: ๋ค์ ์ปค๋ฐ์ ์ํด ํ์ผ์ด ์ ์ฅ๋๋ ์์ ์์น
+- Local repository: ์ปค๋ฐ๋ ์ฝ๋๊ฐ ํฌํจ๋๋ ๋ก์ปฌ ์ ์ฅ์
+- Remote repository: ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๋ฆฌ๋ชจํธ ์๋ฒ
+
+๋๋ถ๋ถ์ Git ๋ช
๋ น์ ์ฃผ๋ก ์ด ๋ค ์์น ์ฌ์ด์์ ํ์ผ์ ์ด๋ํฉ๋๋ค.
+
+### Git์ ์ด๋ป๊ฒ ์๋ํ๋์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ Git ์ํฌํ๋ก์ฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+
+Git์ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์
๋๋ค.
+
+๋ชจ๋ ๊ฐ๋ฐ์๋ ๋ฉ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ ์ ์ง ๊ด๋ฆฌํ๊ณ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์์ ํธ์ง ๋ฐ ์ปค๋ฐํฉ๋๋ค.
+
+์์
์ด ๋ฆฌ๋ชจํธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ํธ์์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ปค๋ฐ์ด ๋งค์ฐ ๋น ๋ฆ
๋๋ค.
+
+๋ฆฌ๋ชจํธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ์ผ์ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
+
+### Git merge vs Git rebase
+
+์ด๋ค ์ ์ด ๋ค๋ฅธ๊ฐ์?
+
+
+
+
+
+
+ํ Git ๋ธ๋์น์์ ๋ค๋ฅธ ๋ธ๋์น๋ก **merge changes** ํ ๋ git merge ๋๋ git rebase๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ ๋ค์ด์ด๊ทธ๋จ์ ๋ ์ปค๋งจ๋์ ์๋ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค.
+
+**Git merge**
+
+์ด ์์
์ ๋ฉ์ธ ๋ธ๋์น์ ์ ์ปค๋ฐ G'๋ฅผ ์์ฑํฉ๋๋ค. G'๋ ๋ฉ์ธ ๋ธ๋์น์ ํผ์ฒ ๋ธ๋์น์ ํ์คํ ๋ฆฌ๋ฅผ ๋ชจ๋ ์ฐ๊ฒฐํฉ๋๋ค.
+
+Git ๋ณํฉ์ **non-destructive**์
๋๋ค. ๋ฉ์ธ ๋ธ๋์น๋ ํผ์ฒ ๋ธ๋์น ๋ชจ๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
+
+**Git rebase**
+
+Git ๋ฆฌ๋ฒ ์ด์ค๋ ํผ์ฒ ๋ธ๋์น ํ์คํ ๋ฆฌ๋ฅผ ๋ฉ์ธ ๋ธ๋์น์ ํค๋๋ก ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ํผ์ฒ ๋ธ๋์น์ ๊ฐ ์ปค๋ฐ์ ๋ํด ์ ์ปค๋ฐ E', F', G' ๊ฐ ์์ฑ๋ฉ๋๋ค.
+
+๋ฆฌ๋ฒ ์ด์ค์ ์ฅ์ ์ ์ ํ์ ์ธ **commit history**๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค.
+
+"git ๋ฆฌ๋ฒ ์ด์ค ํฉ๊ธ๋ฅ "์ ๋ฐ๋ฅด์ง ์์ผ๋ฉด ๋ฆฌ๋ฒ ์ด์ค๊ฐ ์ํํ ์ ์์ต๋๋ค.
+
+**git ๋ฆฌ๋ฒ ์ด์ค ํฉ๊ธ๋ฅ **
+
+ํผ๋ธ๋ ๋ธ๋์น์์๋ ์ ๋ ์ฌ์ฉํ์ง ๋ง์ธ์!
+
+## ํด๋ผ์ฐ๋ ์๋น์ค
+
+### ๋ค์ํ ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ํ ์ ์ฉํ ์นํธ์ํธ(2023๋
ํ)
+
+
+
+
+
+
+### cloud native๋ ๋ฌด์์ธ๊ฐ์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ 1980๋
๋ ์ดํ ์ํคํ
์ฒ์ ํ๋ก์ธ์ค์ ์งํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
+
+
+
+
+
+์กฐ์ง์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ํผ๋ธ๋ฆญ, ํ๋ผ์ด๋น, ํ์ด๋ธ๋ฆฌ๋ ํด๋ผ์ฐ๋์์ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋น๋ํ๊ณ ์คํํ ์ ์์ต๋๋ค.
+
+์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์
์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฅ์ ํ์ฉํ๋๋ก ์ค๊ณ๋์ด ์์ด, ๋ก๋ฉ์ด ํ๋ ฅ์ ์ด๊ณ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
+
+ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ์๋ 4๊ฐ์ง ์ธก๋ฉด์ด ์์ต๋๋ค.
+
+1. Development process
+
+ ์ํฐํด์์ ์ ์์ผ, ๋ฐ๋ธ์ต์ค๋ก ๋ฐ์ ํด ์์ต๋๋ค.
+
+2. Application Architecture
+
+ ์ํคํ
์ฒ๊ฐ ๋ชจ๋๋ฆฌ์ ์๋น์ค์์ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ฐ๋์์ต๋๋ค. ๊ฐ ์๋น์ค๋ ํด๋ผ์ฐ๋ ์ปจํ
์ด๋์ ์ ํ๋ ๋ฆฌ์์ค์ ๋ง๊ฒ ์๊ท๋ชจ๋ก ์กฐ์ ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค.
+
+3. Deployment & packaging
+
+ ์์ ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฌผ๋ฆฌ์ ์๋ฒ์ ๋ฐฐํฌ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ 2000๋
๊ฒฝ์๋ ์ง์ฐ ์๊ฐ์ ๋ฏผ๊ฐํ์ง ์์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํต ๊ฐ์ ์๋ฒ์ ๋ฐฐํฌ๋์์ต๋๋ค. ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ ๋์ปค ์ด๋ฏธ์ง๋ก ํจํค์ง๋์ด ์ปจํ
์ด๋์ ๋ฐฐํฌ๋ฉ๋๋ค.
+
+4. Application infrastructure
+
+ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฒด ํธ์คํ
์๋ฒ ๋์ ํด๋ผ์ฐ๋ ์ธํ๋ผ์ ๋๊ท๋ชจ๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
+
+## ๊ฐ๋ฐ์ ์์ฐ์ฑ ๋๊ตฌ
+
+### JSON ํ์ผ ์๊ฐํ
+
+์ค์ฒฉ๋ JSON ํ์ผ์ ์ฝ๊ธฐ ์ด๋ ต์ต๋๋ค.
+
+JSON ํ์ผ์์ ๊ทธ๋ํ ๋ค์ด์ด๊ทธ๋จ์ ์์ฑํ๊ณ ์ฝ๊ฒ ์ฝ์ ์ ์๋๋ก **JsonCrack**์ ์ ๊ณตํฉ๋๋ค.
+
+๋ํ ์์ฑ๋ ๋ค์ด์ด๊ทธ๋จ์ ์ด๋ฏธ์ง๋ก ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
+
+
+
+
+
+
+### ์ฝ๋๋ฅผ ์ํคํ
์ฒ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ์๋ ๋ณํ
+
+
+
+
+
+
+์ด๋ค ๊ธฐ๋ฅ์ด ์๋์?
+
+- Python ์ฝ๋๋ก ํด๋ผ์ฐ๋ ์์คํ
์ํคํ
์ฒ๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
+- ๋ค์ด์ด๊ทธ๋จ์ ์ฃผํผํฐ ๋
ธํธ๋ถ์์ ๋ฐ๋ก ๋ ๋๋งํ ์ ์์ต๋๋ค.
+- ๋์์ธ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
+- ๋ค์ ํ๋ก๋ฐ์ด๋๋ฅผ ์ง์ํฉ๋๋ค: AWS, Azure, GCP, Kubernetes, ์๋ฆฌ๋ฐ๋ฐ ํด๋ผ์ฐ๋, ์ค๋ผํด ํด๋ผ์ฐ๋ ๋ฑ.
+
+[Github repo](https://github.com/mingrammer/diagrams)
+
+## ๋ฆฌ๋
์ค
+
+### ๋ฆฌ๋
์ค ํ์ผ ์์คํ
์ค๋ช
+
+
+
+
+
+์์ ์๋ Linux ํ์ผ ์์คํ
์ด ๊ฐ์ธ์ด ์ํ๋ ๊ณณ์ ์ง์ ์ง๋ ๋ฌด์ง์ํ ๋ง์๊ณผ ๋น์ทํ์ต๋๋ค. ํ์ง๋ง 1994๋
, ๋ฆฌ๋
์ค ํ์ผ ์์คํ
์ ์ง์๋ฅผ ๋ถ์ฌํ๊ธฐ ์ํด ํ์ผ์์คํ
๊ณ์ธต๊ตฌ์กฐ ํ์ค(FHS:Filesystem Hierarchy Standard)์ด ๋์
๋์์ต๋๋ค.
+
+์ํํธ์จ์ด๋ FHS์ ๊ฐ์ ํ์ค์ ๊ตฌํํจ์ผ๋ก์จ ๋ค์ํ Linux ๋ฐฐํฌํ์์ ์ผ๊ด๋ ๋ ์ด์์์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ Linux ๋ฐฐํฌํ์ด ์ด ํ์ค์ ์๊ฒฉํ๊ฒ ์ค์ํ๋ ๊ฒ์ ์๋๋๋ค. ์์ฒด ๊ณ ์ ์๋ฆฌ๋จผํธ๋ฅผ ํตํฉํ๊ฑฐ๋ ํน์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
+์ด ํ์ค์ ๋ฅ์ํด์ง๋ ค๋ฉด ๋จผ์ ์ดํด๋ณด๋ ๊ฒ๋ถํฐ ์์ํ ์ ์์ต๋๋ค. ํ์์ ์ํด์๋ "cd", ๋๋ ํ ๋ฆฌ ๋ด์ฉ์ ๋์ดํ๋ ค๋ฉด "ls"์ ๊ฐ์ ์ปค๋งจ๋๋ฅผ ํ์ฉํ์ธ์. ํ์ผ ์์คํ
์ ๋ฃจํธ(/)์์ ์์ํ๋ ํธ๋ฆฌ๋ผ๊ณ ์์ํด ๋ณด์ธ์. ์๊ฐ์ด ์ง๋๋ฉด ์ต์ํด์ ธ์ ์๋ จ๋ Linux ๊ด๋ฆฌ์๋ก ๊ฑฐ๋ญ๋ ์ ์์ ๊ฒ์
๋๋ค.
+
+### ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ 18๊ฐ์ง ๋ฆฌ๋
์ค ์ปค๋งจ๋ ์์๋ณด๊ธฐ
+
+Linux ์ปค๋งจ๋๋ ์ด์ ์ฒด์ ์ ์ํธ ์์ฉํ๊ธฐ ์ํ ์ธ์คํฐ๋ญ์
์
๋๋ค. ํ์ผ, ๋๋ ํ ๋ฆฌ, ์์คํ
ํ๋ก์ธ์ค, ๊ธฐํ ์์คํ
์ ์ฌ๋ฌ ์ธก๋ฉด์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Linux ๊ธฐ๋ฐ ์์คํ
์ ํจ์จ์ ์ด๊ณ ํจ๊ณผ์ ์ผ๋ก ํ์ํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ค๋ฉด ์ด๋ฌํ ์ปค๋งจ๋์ ์ต์ํด์ ธ์ผ ํฉ๋๋ค.
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์์ฃผ ์ฌ์ฉ๋๋ Linux ์ปค๋งจ๋์
๋๋ค.
+
+
+
+
+
+
+- ls - ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก
+- cd - ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ณ๊ฒฝ
+- mkdir - ์๋ก์ด ๋๋ ํ ๋ฆฌ ์์ฑ
+- rm - ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ ์ ๊ฑฐ
+- cp - ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ ๋ณต์ฌ
+- mv - ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ ์ด๋ฆ๋ณ๊ฒฝ ํน์ ์ด๋
+- chmod - ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ ๊ถํ ๊ด๋ฆฌ
+- grep - ํ์ผ์์ ํจํด ๊ฒ์
+- find - ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ ๊ฒ์
+- tar - tarball ์์นด์ด๋ธ ํ์ผ ์กฐ์
+- vi - ํ
์คํธ ์๋ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ํธ์ง
+- cat - ํ์ผ์ ์ฝํ
์ธ ํ์
+- top - ํ๋ก์ธ์ค ๋ฆฌ์์ค ์ฌ์ฉ๋ ํ์
+- ps - ํ๋ก์ธ์ ์ ๋ณด ํ์
+- kill - ์ ํธ๋ฅผ ์ ์กํ์ฌ ํ๋ก์ธ์ค ์ข
๋ฃ
+- du - ํ์ผ ์ฉ๋ ์ฌ์ฉ๋ ์ถ์
+- ifconfig - ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ค์
+- ping - ํธ์คํธ ๊ฐ ๋คํธ์ํฌ ์ปค๋ฅ์
ํ
์คํธ
+
+## ๋ณด์
+
+### HTTPS๋ ์ด๋ป๊ฒ ์๋ํ๋์?
+
+Hypertext Transfer Protocol Secure(HTTPS)๋ Hypertext Transfer Protocol(HTTP)์ ํ์ฅ์
๋๋ค. HTTPS๋ Transport Layer Security(TLS)๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ์จ๋ผ์ธ์์ ๋ฐ์ดํฐ๋ฅผ ํ์ทจ๋นํ๋ฉด ํ์ทจ์๊ฐ ์ป๋ ๊ฒ์ ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ฟ์
๋๋ค.
+
+
+
+
+
+
+๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์ํธํ๋๊ณ ๋ณตํธํ๋๋์?
+
+1๋จ๊ณ - ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ์๋ฒ๊ฐ TCP ์ปค๋ฅ์
์ ์ค์ ํฉ๋๋ค.
+
+2๋จ๊ณ - ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ "client hello"๋ฅผ ๋ณด๋
๋๋ค. ์ด ๋ฉ์์ง์๋ ํ์ํ ์ํธํ ์๊ณ ๋ฆฌ์ฆ(cipher suites) ์ธํธ์ ์ง์ํ ์ ์๋ ์ต์ TLS ๋ฒ์ ์ด ํฌํจ๋ฉ๋๋ค. ์๋ฒ๋ "server hello"๋ก ์๋ตํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์๊ณ ๋ฆฌ์ฆ๊ณผ TLS ๋ฒ์ ์ ์ง์ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ ์์ต๋๋ค.
+
+๊ทธ๋ฌ๋ฉด ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ SSL ์ธ์ฆ์๋ฅผ ๋ณด๋
๋๋ค. ์ธ์ฆ์์๋ ๊ณต๊ฐ ํค, ํธ์คํธ ์ด๋ฆ, ๋ง๋ฃ ๋ ์ง ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ธ์ฆ์์ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค.
+
+3๋จ๊ณ - SSL ์ธ์ฆ์์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ํ ํด๋ผ์ด์ธํธ๋ ์ธ์
ํค๋ฅผ ์์ฑํ๊ณ ๊ณต๊ฐ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํํฉ๋๋ค. ์๋ฒ๋ ์ํธํ๋ ์ธ์
ํค๋ฅผ ์์ ํ๊ณ ๊ฐ์ธ ํค๋ก ์ํธ๋ฅผ ํด๋
ํฉ๋๋ค.
+
+4๋จ๊ณ - ์ด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ชจ๋ ๋์ผํ ์ธ์
ํค(๋์นญ ์ํธํ)๋ฅผ ๋ณด์ ํ๋ฏ๋ก ์ํธํ๋ ๋ฐ์ดํฐ๋ ์์ ํ ์๋ฐฉํฅ ์ฑ๋๋ก ์ ์ก๋ฉ๋๋ค.
+
+๋ฐ์ดํฐ ์ ์ก ์ค์ HTTPS๊ฐ ๋์นญ ์ํธํ๋ก ์ ํ๋๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? ๋ ๊ฐ์ง ์ฃผ์ ์ด์ ๊ฐ ์์ต๋๋ค.
+
+1. ๋ณด์: ๋น๋์นญ ์ํธํ๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์งํ๋ฉ๋๋ค. ์ฆ, ์๋ฒ๊ฐ ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ค์ ๋ณด๋ด๋ ค๊ณ ํ๋ฉด ๋๊ตฌ๋ ๊ณต๊ฐ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํด๋
ํ ์ ์์ต๋๋ค.
+
+2. ์๋ฒ ๋ฆฌ์์ค: ๋น๋์นญ ์ํธํ๋ ์๋นํ ์ํ์ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๊ธด ์ธ์
์ ๋ฐ์ดํฐ ์ ์ก์๋ ์ ํฉํ์ง ์์ต๋๋ค.
+
+### ๊ฐ๋จํ ์ฉ์ด๋ก ์ค๋ช
ํ๋ Oauth 2.0
+
+OAuth 2.0์ ๊ฐ๋ ฅํ๊ณ ์์ ํ ํ๋ ์์ํฌ๋ก, ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฏผ๊ฐํ ์๊ฒฉ ์ฆ๋ช
์ ๊ณต์ ํ์ง ์๊ณ ๋ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์๋ก ์์ ํ๊ฒ ์ํธ ์์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
+
+
+
+
+
+OAuth์ ์ฐธ์ฌํ๋ ๊ฐ์ฒด๋ ์ฌ์ฉ์, ์๋ฒ, ID ๊ณต๊ธ์(Identity Provider, IDP)์
๋๋ค.
+
+OAuth ํ ํฐ์ ๋ฌด์์ ํ ์ ์๋์?
+
+OAuth๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ ๋ฐ ๊ถํ์ ๋ํ๋ด๋ OAuth ํ ํฐ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ด ํ ํฐ์ ๋ช ๊ฐ์ง ์ค์ํ ์์
์ ์ํํ ์ ์์ต๋๋ค.
+
+Single Sign-On(SSO): OAuth ํ ํฐ์ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ๋ก๊ทธ์ธ์ผ๋ก ์ฌ๋ฌ ์๋น์ค๋ ์ฑ์ ๋ก๊ทธ์ธํ ์ ์์ด ๋์ฑ ์ฝ๊ณ ์์ ํ๊ฒ ์ํํ ์ ์์ต๋๋ค.
+
+Authorization Across Systems: ์์คํ
๊ฐ ์ธ์ฆ: OAuth ํ ํฐ์ ์ฌ์ฉํ๋ฉด ๋ค์ํ ์์คํ
์์ ์ธ์ฆ ๋๋ ์ก์ธ์ค ๊ถํ์ ๊ณต์ ํ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์์คํ
์์ ๋ณ๋๋ก ๋ก๊ทธ์ธํ ํ์๊ฐ ์์ต๋๋ค.
+
+Accessing User Profile: OAuth ํ ํฐ์ด ์๋ ์ฑ์ ์ฌ์ฉ์๊ฐ ํ์ฉํ ์ฌ์ฉ์ ํ๋กํ์ ํน์ ๋ถ๋ถ์ ์ก์ธ์คํ ์ ์์ง๋ง ๋ชจ๋ ๋ถ๋ถ์ ๋ณผ ์๋ ์์ต๋๋ค.
+
+OAuth 2.0์ ์ฌ์ฉ์์ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๋ ๋์์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์๋น์ค์์ ์ํํ๊ณ ๋ฒ๊ฑฐ๋ก์ ์๋ ์จ๋ผ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค.
+
+### ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ 4๊ฐ์ง ์ฃผ์ ํํ
+
+
+
+
+
+1. SSH Keys:
+
+ ์ํธํ ํค๋ ์๊ฒฉ ์์คํ
๋ฐ ์๋ฒ์ ์์ ํ๊ฒ ์ก์ธ์คํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
+
+1. OAuth Tokens:
+
+ ์จ๋ํํฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ๋ํ ์ ํ๋ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ํ ํฐ์
๋๋ค.
+
+1. SSL Certificates:
+
+ ๋์งํธ ์ธ์ฆ์๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์์ ํ ์ํธํ๋ ํต์ ์ ๋ณด์ฅํฉ๋๋ค.
+
+1. Credentials:
+
+ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ ๋ค์ํ ์์คํ
๊ณผ ์๋น์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ ํ์ธํ๊ณ ๋ถ์ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
+
+### Session, cookie, JWT, token, SSO, OAuth 2.0 - ๊ทธ๊ฒ ๋ญ๊ฐ์?
+
+์ด ์ฝ๊ด์ ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ๊ด๋ฆฌ์ ๊ด๋ จ์ด ์์ต๋๋ค. ์น์ฌ์ดํธ์ ๋ก๊ทธ์ธํ ๋ ์ฌ์ฉ์๋ ์์ ์ด ๋๊ตฌ์ธ์ง๋ฅผ ์ ์ธํฉ๋๋ค(์๋ณ). ์ฌ์ฉ์์ ์ ์์ ํ์ธํ๊ณ (์ธ์ฆ) ํ์ํ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค(์ธ๊ฐ). ๊ณผ๊ฑฐ์ ๋ง์ ์๋ฃจ์
์ด ์ ์๋์๊ณ ๊ทธ ๋ชฉ๋ก์ ๊ณ์ ๋์ด๋๊ณ ์์ต๋๋ค.
+
+
+
+
+
+๊ฐ๋จํ ๊ฒ๋ถํฐ ๋ณต์กํ ๊ฒ๊น์ง, ์ฌ์ฉ์ ์ ์ ๊ด๋ฆฌ์ ๋ํ ์ ์ ์ดํด๋ฅผ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค.
+
+- WWW-์ธ์ฆ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ๋ก๊ทธ์ธ ์๋ช
์ฃผ๊ธฐ๋ฅผ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค๋๋ ์๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
+
+- ๋ก๊ทธ์ธ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๋ณด๋ค ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ธ์
์ฟ ํค์
๋๋ค. ์๋ฒ๋ ์ธ์
์ ์ฅ์๋ฅผ ์ ์งํ๊ณ ๋ธ๋ผ์ฐ์ ๋ ์ธ์
์ ID๋ฅผ ์ ์งํฉ๋๋ค. ์ฟ ํค๋ ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์์๋ง ์๋ํ๋ฉฐ ๋ชจ๋ฐ์ผ ์ฑ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
+
+- ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ ํฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํ ํฐ์ ์๋ฒ๋ก ์ ์กํ๋ฉด ์๋ฒ๊ฐ ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค. ๋จ์ ์ ํ ํฐ์ ์ํธํํ๊ณ ํด๋
ํด์ผ ํ๋ฏ๋ก ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์๋ค๋ ๊ฒ์
๋๋ค.
+
+- JWT๋ ํ ํฐ์ ๋ํ๋ด๋ ํ์ค ๋ฐฉ์์
๋๋ค. ์ด ์ ๋ณด๋ ๋์งํธ ์๋ช
์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ฆ๋๊ณ ์ ๋ขฐํ ์ ์์ต๋๋ค. JWT์๋ ์๋ช
์ด ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์๋ฒ ์ธก์ ์ธ์
์ ๋ณด๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค.
+
+- SSO( Single Sign-On)์ ์ฌ์ฉํ๋ฉด ํ ๋ฒ๋ง ๋ก๊ทธ์จํ์ฌ ์ฌ๋ฌ ์น์ฌ์ดํธ์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค. CAS( Central Authentication Service)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ดํธ ๊ฐ ์ ๋ณด๋ฅผ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
+
+- OAuth 2.0์ ์ฌ์ฉํ๋ฉด ํ ์น์ฌ์ดํธ๊ฐ ๋ค๋ฅธ ์น์ฌ์ดํธ์์ ๋ด ์ ๋ณด์ ์ก์ธ์คํ ์ ์๋๋ก ์ธ์ฆํ ์ ์์ต๋๋ค.
+
+### ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๋ ๋ฐฉ๋ฒ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
+
+
+
+
+
+
+**ํ์ง ๋ง์์ผ ํ ๊ฒ๋ค**
+
+- ๋น๋ฐ๋ฒํธ๋ฅผ ์ผ๋ฐ ํ
์คํธ๋ก ์ ์ฅํ๋ ๊ฒ์ ๋ด๋ถ ์ก์ธ์ค ๊ถํ์ด ์๋ ๋ชจ๋ ์ฌ๋์ด ๋ณผ ์ ์์ผ๋ฏ๋ก ์ข์ ์๊ฐ์ด ์๋๋๋ค.
+
+- ๋น๋ฐ๋ฒํธ ํด์๋ฅผ ์ง์ ์ ์ฅํ๋ ๊ฒ์ ๋ ์ธ๋ณด์ฐ ํ
์ด๋ธ๊ณผ ๊ฐ์ ์ฌ์ ๊ณ์ฐ ๊ณต๊ฒฉ์ ์ทจ์ฝํ๊ธฐ ๋๋ฌธ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
+
+- ์ฌ์ ๊ณ์ฐ ๊ณต๊ฒฉ์ ์ํํ๊ธฐ ์ํด ๋น๋ฐ๋ฒํธ๋ฅผ ์ํธ ์ฒ๋ฆฌํฉ๋๋ค.
+
+**salt๋ ๋ฌด์์ธ๊ฐ์?**
+
+OWASP ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฅด๋ฉด "์ํธ๋ ํด์ฑ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ๊ฐ ๋น๋ฐ๋ฒํธ์ ์ถ๊ฐ๋๋ ๊ณ ์ ํ๊ณ ๋ฌด์์๋ก ์์ฑ๋๋ ๋ฌธ์์ด"์
๋๋ค.
+
+**๋น๋ฐ๋ฒํธ์ salt๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?**
+
+1. ํด์ ๊ฒฐ๊ณผ๋ ๊ฐ ๋น๋ฐ๋ฒํธ๋ง๋ค ๊ณ ์ ํฉ๋๋ค.
+1. ๋น๋ฐ๋ฒํธ๋ ๋ค์ ํฌ๋งท์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์์ต๋๋ค. ํด์(password + salt).
+
+**๋น๋ฐ๋ฒํธ๋ ์ด๋ป๊ฒ ํ์ธํ๋์?**
+
+๋น๋ฐ๋ฒํธ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ค๋ฉด ๋ค์ ๊ณผ์ ์ ๊ฑฐ์น ์ ์์ต๋๋ค.
+
+1. ํด๋ผ์ด์ธํธ์์ ํจ์ค์๋๋ฅผ ์
๋ ฅํฉ๋๋ค.
+1. ์์คํ
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํด๋น salt๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
+1. ์์คํ
์ด ๋น๋ฐ๋ฒํธ์ salt๋ฅผ ์ถ๊ฐํ๊ณ ํด์๋ก ๋ง๋ญ๋๋ค. ํด์๋ ๊ฐ์ H1์ด๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค.
+1. ์์คํ
์ H1๊ณผ H2๋ฅผ ๋น๊ตํ๋๋ฐ, ์ฌ๊ธฐ์ H2๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ํด์์
๋๋ค. ๋์ด ๊ฐ์ผ๋ฉด ๋น๋ฐ๋ฒํธ๊ฐ ์ ํจํ ๊ฒ์
๋๋ค.
+
+### 10์ธ ์ด๋ฆฐ์ด์๊ฒ JSON Web Token(JWT) ์ค๋ช
ํ๊ธฐ
+
+
+
+
+
+JWT๋ผ๋ ํน๋ณํ ์์๊ฐ ์๋ค๊ณ ์์ํด ๋ณด์ธ์. ์ด ์์ ์์๋ ํค๋, ํ์ด๋ก๋, ์๋ช
์ธ ๋ถ๋ถ์ด ์์ต๋๋ค.
+
+ํค๋๋ ์์ ์ธ๋ถ์ ๋ผ๋ฒจ๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค. ํค๋๋ ์์์ ํ์
๊ณผ ๋ณด์ ๋ฐฉ๋ฒ์ ์๋ ค์ค๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ค๊ดํธ { }์ ์ฝ๋ก : ์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ธ JSON์ด๋ผ๋ ํฌ๋งท์ผ๋ก ์์ฑ๋ฉ๋๋ค.
+
+ํ์ด๋ก๋๋ ์ ์กํ๋ ค๋ ์ค์ ๋ฉ์์ง ๋๋ ์ ๋ณด์ ๊ฐ์ต๋๋ค. ์ด๋ฆ, ๋์ด ๋๋ ๊ณต์ ํ๊ณ ์ ํ๋ ๊ธฐํ ๋ฐ์ดํฐ๊ฐ ๋ ์ ์์ต๋๋ค. ๋ํ JSON ํฌ๋งท์ผ๋ก ์์ฑ๋์ด ์ดํดํ๊ธฐ ์ฝ๊ณ ์์
ํ๊ธฐ ์ฝ์ต๋๋ค.
+์๋ช
์ JWT๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๋ ์ญํ ์ ํฉ๋๋ค. ์๋ช
์ ๋ฐ์ ์๋ง ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ํน๋ณํ ๋์ฅ๊ณผ ๊ฐ์ต๋๋ค. ์๋ช
์ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ์ํฌ๋ฆฟ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ฉ๋๋ค. ์ด ์๋ช
์ ์๋ฌด๋ ๋ฐ์ ์ ๋ชจ๋ฅด๊ฒ JWT์ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ํฉ๋๋ค.
+
+JWT๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ ค๋ฉด ํค๋, ํ์ด๋ก๋, ์๋ช
์ ์์ ์์ ๋ฃ๊ณ ์๋ฒ๋ก ์ ์กํฉ๋๋ค. ์๋ฒ๋ ํค๋์ ํ์ด๋ก๋๋ฅผ ์ฝ๊ฒ ์ฝ๊ณ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง, ๋ฌด์์ ํ๋ ค๋์ง ์ดํดํ ์ ์์ต๋๋ค.
+
+### Google authenticator(๋๋ ๋ค๋ฅธ ์ ํ์ 2 factor authenticator)๋ ์ด๋ป๊ฒ ์๋ํ๋์?
+
+2๋จ๊ณ ์ธ์ฆ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ๊ตฌ๊ธ ์ธ์ฆ์๊ฐ ๊ณ์ ๋ก๊ทธ์ธ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ป๊ฒ ๋ณด์์ ๋ณด์ฅํ๋์?
+
+๊ตฌ๊ธ ์ธ์ฆ๊ธฐ๋ 2๋จ๊ณ ์ธ์ฆ ์๋น์ค๋ฅผ ๊ตฌํํ๋ ์ํํธ์จ์ด ๊ธฐ๋ฐ ์ธ์ฆ๊ธฐ์
๋๋ค. ์๋ ๋ค์ด์ด๊ทธ๋จ์์ ์์ธํ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
+
+
+
+
+
+
+๋ ์คํ
์ด์ง๊ฐ ์์ต๋๋ค.
+
+- ์คํ
์ด์ง 1 - ์ฌ์ฉ์๊ฐ ๊ตฌ๊ธ 2๋จ๊ณ ์ธ์ฆ์ ํ์ฑํํฉ๋๋ค.
+- ์คํ
์ด์ง 2 - ์ฌ์ฉ์๋ ๋ก๊ทธ์ธ ๋ฑ์ ์ธ์ฆ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+์ด ์คํ
์ด์ง๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
+
+**์คํ
์ด์ง1**
+
+1,2 ๋จ๊ณ: Bob์ด ์น ํ์ด์ง๋ฅผ ์ด์ด 2๋จ๊ณ ์ธ์ฆ์ ํ์ฑํํฉ๋๋ค. ํ๋ก ํธ์๋์์ ์ํฌ๋ฆฟ ํค๋ฅผ ์์ฒญํฉ๋๋ค. ์ธ์ฆ ์๋น์ค์์ Bob์ ์ํฌ๋ฆฟ ํค๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค.
+
+3 ๋จ๊ณ: ์ธ์ฆ ์๋น์ค๋ ํ๋ก ํธ์๋์ URI๋ฅผ ๋ฐํํฉ๋๋ค. URI๋ ํค ๋ฐ๊ธ์, ์ฌ์ฉ์ ์ด๋ฆ, ์ํฌ๋ฆฟ ํค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. URI๋ ์น ํ์ด์ง์ QR ์ฝ๋ ํํ๋ก ํ์๋ฉ๋๋ค.
+
+4 ๋จ๊ณ: ๊ทธ๋ฐ ๋ค์ Bob์ ๊ตฌ๊ธ ์ธ์ฆ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ QR ์ฝ๋๋ฅผ ์ค์บํฉ๋๋ค. ์ํฌ๋ฆฟ ํค๋ ์ธ์ฆ๊ธฐ์ ์ ์ฅ๋ฉ๋๋ค.
+
+**์คํ
์ด์ง2**
+
+1, 2 ๋จ๊ณ: ๋ฐฅ์ ๊ตฌ๊ธ 2๋จ๊ณ ์ธ์ฆ์ผ๋ก ์น์ฌ์ดํธ์ ๋ก๊ทธ์ธํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋น๋ฐ๋ฒํธ๊ฐ ํ์ํฉ๋๋ค. ๊ตฌ๊ธ ์ธ์ฆ๊ธฐ๋ 30์ด๋ง๋ค TOTP(Time-based One Time Password) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ 6์๋ฆฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํฉ๋๋ค. ๋ฐฅ์ ์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ๋ค์ด๊ฐ๋๋ค.
+
+3, 4 ๋จ๊ณ: ํ๋ก ํธ์๋๋ ์ธ์ฆ์ ์ํด ๋ฐฅ์ด ์
๋ ฅํ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐฑ์๋๋ก ์ ์กํฉ๋๋ค. ์ธ์ฆ ์๋น์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํฌ๋ฆฟ ํค๋ฅผ ์ฝ๊ณ ํด๋ผ์ด์ธํธ์ ๋์ผํ TOTP ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ 6์๋ฆฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํฉ๋๋ค.
+
+5 ๋จ๊ณ: ์ธ์ฆ ์๋น์ค๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ์์ฑํ ๋ ๊ฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋น๊ตํ๊ณ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ํ๋ก ํธ์๋์ ๋ฐํํฉ๋๋ค. Bob์ ๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ๋ก๊ทธ์ธ ํ๋ก์ธ์ค๋ฅผ ์งํํ ์ ์์ต๋๋ค.
+
+์ด ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์์ ํ๊ฐ์?
+
+- ๋ค๋ฅธ ์ฌ๋์ด ์ํฌ๋ฆฟ ํค๋ฅผ ํ๋ํ ์ ์๋์?
+
+ ์ํฌ๋ฆฟ ํค๊ฐ HTTPS๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ก๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ธ์ฆ๊ธฐ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋น๋ฐ ํค๋ฅผ ์ ์ฅํ๋ฉฐ, ๋น๋ฐ ํค๊ฐ ์ํธํ๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
+
+- ํด์ปค๊ฐ 6์๋ฆฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์ถ์ธกํ ์ ์๋์?
+
+ ์๋์. ๋น๋ฐ๋ฒํธ๋ 6์๋ฆฌ๋ก ๊ตฌ์ฑ๋๋ฏ๋ก ์์ฑ๋ ๋น๋ฐ๋ฒํธ์ ์กฐํฉ ๊ฐ๋ฅ ์๋ 100๋ง ๊ฐ์
๋๋ค. ๊ฒ๋ค๊ฐ ๋น๋ฐ๋ฒํธ๋ 30์ด๋ง๋ค ๋ณ๊ฒฝ๋ฉ๋๋ค. ํด์ปค๊ฐ 30์ด ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์๋ด๋ ค๋ฉด ์ด๋น 30,000๊ฐ์ ์กฐํฉ์ ์
๋ ฅํด์ผ ํฉ๋๋ค.
+
+
+## ์ค์ ์ฌ๋ก ์ฐ๊ตฌ
+
+### ๋ทํ๋ฆญ์ค ๊ธฐ์ ์คํ
+
+์ด ๊ฒ์๋ฌผ์ ์ฌ๋ฌ ๋ทํ๋ฆญ์ค ์์ง๋์ด๋ง ๋ธ๋ก๊ทธ์ ์คํ์์ค ํ๋ก์ ํธ์ ์ฐ๊ตฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๋ถ์ ํํ ๋ด์ฉ์ ๋ฐ๊ฒฌํ๋ฉด ์ธ์ ๋ ์ง ์๋ ค์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
+
+
+
+
+
+**Mobile and web**: ๋ทํ๋ฆญ์ค๋ ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ์ฑ์ ๊ตฌ์ถํ๊ธฐ ์ํด Swift์ Kotlin์ ์ฑํํ์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ React๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+**Frontend/server communication**: ๋ทํ๋ฆญ์ค๋ GraphQL์ ์ฌ์ฉํฉ๋๋ค.
+
+**Backend services**: ๋ทํ๋ฆญ์ค๋ ZUUL, ์ ๋ ์นด, ์คํ๋ง ๋ถํธ ํ๋ ์์ํฌ ๋ฐ ๊ธฐํ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
+
+**Databases**: ๋ทํ๋ฆญ์ค๋ EV ์บ์, ์นด์ฐ๋๋ผ, ์ฝํฌ๋ก์นDB ๋ฐ ๊ธฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฉํฉ๋๋ค.
+
+**Messaging/streaming**: ๋ทํ๋ฆญ์ค๋ ๋ฉ์์ง๊ณผ ์คํธ๋ฆฌ๋ฐ์ ์ํด ์ํ์น ์นดํ์นด์ ํํฌ(Fink)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+**Video storage**: ๋ทํ๋ฆญ์ค๋ ๋น๋์ค ์คํ ๋ฆฌ์ง๋ก S3์ Open Connect๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+**Data processing**: ๋ทํ๋ฆญ์ค๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด Flink์ Spark๋ฅผ ํ์ฉํ๊ณ , ์ด๋ฅผ Tableau๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐํํฉ๋๋ค. ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ๋ Redshift๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+**CI/CD**: ๋ทํ๋ฆญ์ค๋ CI/CD ํ๋ก์ธ์ค๋ฅผ ์ํด JIRA, Confluence, PagerDuty, Jenkins, Gradle, Chaos Monkey, Spinnaker, Atlas ๋ฑ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
+
+### ํธ์ํฐ ์ํคํ
์ฒ 2022
+
+์, ์ด๊ฒ์ด ์ค์ ํธ์ํฐ ์ํคํ
์ฒ์
๋๋ค. ์๋ก ๋จธ์คํฌ๊ฐ ๊ฒ์ํ๊ณ ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํด ๋ค์ ๊ทธ๋ฆฐ ๊ฒ์
๋๋ค.
+
+
+
+
+
+
+### ์ง๋ 15๋
๊ฐ ์์ด๋น์ค๋น ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์ ์งํ ๊ณผ์
+
+์์ด๋น์ค๋น์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ ํฌ๊ฒ 3๊ฐ์ง ์คํ
์ด์ง๋ฅผ ๊ฑฐ์ณค์ต๋๋ค.
+
+
+
+
+
+
+๋ชจ๋๋ฆฌ์ค (2008 - 2017)
+
+์์ด๋น์ค๋น๋ ํธ์คํธ์ ๊ฒ์คํธ๋ฅผ ์ํ ๋จ์ํ ๋ง์ผํ๋ ์ด์ค์์ ์์๋์์ต๋๋ค. ์ด๋ ๋ชจ๋๋ฆฌ์ค๋ผ๊ณ ํ๋ Ruby on Rails ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค.
+
+์ฑ๋ฆฐ์ง๋ ๋ฌด์์ธ๊ฐ์?
+
+- ํผ๋์ค๋ฌ์ด ํ ์ค๋์ญ + ์ค๋์ญ ์๋ ์ฝ๋
+- ๋๋ฆฐ ๊ฐ๋ฐ
+
+๋ง์ดํฌ๋ก์๋น์ค (2017 - 2020)
+
+๋ง์ดํฌ๋ก์๋น์ค๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์ ํต์ฌ ์๋น์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
+
+- Data fetching service
+- Business logic data service
+- Write workflow service
+- UI aggregation service
+- ๊ฐ ์๋น์ค์๋ ํ๋์ ์ ๋ด ํ ๋๊ธฐ
+
+์ฑ๋ฆฐ์ง๋ ๋ฌด์์ธ๊ฐ์?
+
+์๋ฐฑ ๊ฐ์ ์๋น์ค์ ์ข
์์ฑ์ ์ฌ๋์ด ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
+
+๋ง์ดํฌ๋ก + ๋งคํฌ๋ก์๋น์ค (2020 - ํ์ฌ)
+
+์์ด๋น์ค๋น๋ ํ์ฌ ์ด๋ฅผ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๋ง์ดํฌ๋ก ๋ฐ ๋งคํฌ๋ก์๋น์ค ํ์ด๋ธ๋ฆฌ๋ ๋ชจ๋ธ์ API ํตํฉ์ ์ค์ ์ ๋ก๋๋ค.
+
+### ๋ชจ๋
ธ๋ ํฌ vs ๋ง์ดํฌ๋ก๋ ํฌ
+
+์ด๋ค ๊ฒ์ด ๊ฐ์ฅ ์ข์๊น์? ํ์ฌ๋ง๋ค ๋ค๋ฅธ ์ต์
์ ์ ํํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
+
+
+
+
+
+
+๋ชจ๋
ธ๋ ํฌ๋ ์๋ก์ด ๊ฒ์ด ์๋๋๋ค. Linux์ Windows ๋ชจ๋ ๋ชจ๋
ธ๋ ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด์ก์ต๋๋ค. ํ์ฅ์ฑ๊ณผ ๋น๋ ์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๊ตฌ๊ธ์ ๋ด๋ถ ์ ์ฉ ํด์ฒด์ธ์ ๊ฐ๋ฐํ์ฌ ๋ ๋น ๋ฅด๊ฒ ํ์ฅํ๊ณ ์๊ฒฉํ ์ฝ๋ฉ ํ์ง ํ์ค์ ์ ์ฉํ์ฌ ์ผ๊ด์ฑ์ ์ ์งํ์ต๋๋ค.
+
+์๋ง์กด๊ณผ ๋ทํ๋ฆญ์ค๋ ๋ง์ดํฌ๋ก์๋น์ค ์ฒ ํ์ ์ฃผ์ ํ๋ณด๋์ฌ์
๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์์ฐ์ค๋ฝ๊ฒ ์๋น์ค ์ฝ๋๋ฅผ ๋ณ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ๋ถ๋ฆฌํฉ๋๋ค. ํ์ฅ ์๋๋ ๋น ๋ฅด์ง๋ง ๋์ค์ ๊ฑฐ๋ฒ๋์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
+
+๋ชจ๋
ธ๋ ํฌ ๋ด์์ ๊ฐ ์๋น์ค๋ ํ๋์ ํด๋์ด๋ฉฐ, ๋ชจ๋ ํด๋์๋ ๋น๋ ๊ตฌ์ฑ ๋ฐ ์์ ์ ๊ถํ ์ ์ด๊ฐ ์์ต๋๋ค. ๋ชจ๋ ์๋น์ค ๊ตฌ์ฑ์์ ์์ ์ ํด๋์ ๋ํ ์ฑ
์์ด ์์ต๋๋ค.
+
+๋ฐ๋ฉด ๋ง์ดํฌ๋ก๋ ํฌ์์๋ ๊ฐ ์๋น์ค๊ฐ ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ด๋นํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๋น๋ ๊ตฌ์ฑ๊ณผ ๊ถํ์ด ์ค์ ๋ฉ๋๋ค.
+
+๋ชจ๋
ธ๋ ํฌ์์๋ ๋น์ฆ๋์ค์ ๊ด๊ณ์์ด ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์์ ์ข
์์ฑ์ด ๊ณต์ ๋๋ฏ๋ก ๋ฒ์ ์
๊ทธ๋ ์ด๋๊ฐ ์์ ๋ ๋ชจ๋ ์ฝ๋๋ฒ ์ด์ค๊ฐ ํด๋น ๋ฒ์ ์ ์
๊ทธ๋ ์ด๋ํฉ๋๋ค.
+
+๋ง์ดํฌ๋ก๋ ํฌ์์๋ ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์์ ์ข
์์ฑ์ ์ ์ดํฉ๋๋ค. ๊ธฐ์
์ ์์ฒด ์ผ์ ์ ๋ฐ๋ผ ๋ฒ์ ์ ์
๊ทธ๋ ์ด๋ํ ์๊ธฐ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
+
+๋ชจ๋
ธ๋ ํฌ์๋ ์ฒดํฌ์ธ์ ๋ํ ํ์ค์ด ์์ต๋๋ค. ๊ตฌ๊ธ์ ์ฝ๋ ๊ฒํ ํ๋ก์ธ์ค๋ ๋์ ๊ธฐ์ค์ ์ค์ ํ๋ ๊ฒ์ผ๋ก ์ ๋ช
ํ๋ฉฐ, ๋น์ฆ๋์ค์ ๊ด๊ณ์์ด ๋ชจ๋
ธ๋ ํฌ์ ์ผ๊ด๋ ํ์ง ํ์ค์ ๋ณด์ฅํฉ๋๋ค.
+
+๋ง์ดํฌ๋ก๋ ํฌ๋ ์์ฒด ํ์ค์ ์ค์ ํ๊ฑฐ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํตํฉํ์ฌ ๊ณต์ ํ์ค์ ์ฑํํ ์ ์์ต๋๋ค. ๋น์ฆ๋์ค์ ๋ง๊ฒ ๋ ๋น ๋ฅด๊ฒ ํ์ฅํ ์ ์์ง๋ง ์ฝ๋ ํ์ง์ด ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค.
+๊ตฌ๊ธ ์์ง๋์ด๋ Bazel์, Meta๋ Buck์ ๋ง๋ค์์ต๋๋ค. ๊ทธ ์ธ์๋ Nx, Lerna ๋ฑ ๋ค์ํ ์คํ ์์ค ๋๊ตฌ๊ฐ ์์ต๋๋ค.
+
+์๋
์ ๊ฑธ์ณ ๋ง์ดํฌ๋ก๋ ํฌ๋ Java์ฉ Maven๊ณผ Gradle, NodeJS์ฉ NPM, C/C++์ฉ CMake ๋ฑ ๋ ๋ง์ ๋๊ตฌ๋ฅผ ์ง์ํ๊ฒ ๋์์ต๋๋ค.
+
+### ์คํ ์ค๋ฒํ๋ก ์น์ฌ์ดํธ๋ฅผ ์ด๋ป๊ฒ ๋์์ธํ ๊ฑด๊ฐ์?
+
+๋ต๋ณ์ด ์จํ๋ ๋ฏธ์ค ์๋ฒ์ ๋ชจ๋๋ฆฌ์ค(๋ค์ ์ด๋ฏธ์ง ํ๋จ)๋ผ๋ฉด ๋ฉด์ ์์ ๋จ์ด์ง ๊ฐ๋ฅ์ฑ์ด ๋์ง๋ง, ์ค์ ๋ก๋ ๊ทธ๋ ๊ฒ ๊ตฌ์ถ๋์ด ์์ต๋๋ค!
+
+
+
+
+
+
+**์ฌ๋๋ค์ด ์๊ฐํ๋ ๋์์ธ**
+
+๋ฉด์ ๊ด์ ์๋ง๋ ์ฌ์ง์ ์๋จ ๋ถ๋ถ๊ณผ ๊ฐ์ ๊ฒ์ ๊ธฐ๋ํ๊ณ ์์ ๊ฒ์
๋๋ค.
+
+- ๋ง์ดํฌ๋ก์๋น์ค๋ ์์คํ
์ ์์ ์ปดํฌ๋ํธ๋ก ๋ถํดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
+- ๊ฐ ์๋น์ค์๋ ์์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ต๋๋ค. ์บ์๋ฅผ ๋ง์ด ์ฌ์ฉํ์ธ์.
+- ์๋น์ค๊ฐ ์ค๋ฉ๋ฉ๋๋ค.
+- ์๋น์ค๋ ๋ฉ์์ง ํ๋ฅผ ํตํด ๋น๋๊ธฐ์ ์ผ๋ก ์๋ก ํต์ ํฉ๋๋ค.
+- ์ด ์๋น์ค๋ ์ด๋ฒคํธ ์์ฑ๊ณผ CQRS๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค.
+- ์ต์ข
์ ํฉ์ฑ, CAP ์ ๋ฆฌ ๋ฑ๊ณผ ๊ฐ์ ๋ถ์ฐ ์์คํ
์ ๋ํ ์ง์์ ๋ฝ๋ด ๋ณด์ธ์.
+
+**์ค์ ๋ด์ฉ**
+
+์คํ ์ค๋ฒํ๋ก๋ ๋จ 9๋์ ์จํ๋ ๋ฏธ์ค ์น ์๋ฒ๋ก ๋ชจ๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ฉฐ, ์ด ์๋ฒ๋ ๋ชจ๋๋ฆฌ์ค๋ก ์ด์๋ฉ๋๋ค! ์์ฒด ์๋ฒ๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ ํด๋ผ์ฐ๋์์ ์คํ๋์ง ์์ต๋๋ค.
+
+์ด๋ ์ค๋๋ ์ ์ผ๋ฐ์ ์ธ ๋ฏฟ์๊ณผ๋ ์๋ฐ๋๋ ๊ฒ์
๋๋ค.
+
+### ์๋ง์กด ํ๋ผ์ ๋น๋์ค ๋ชจ๋ํฐ๋ง์ด ์๋ฒ๋ฆฌ์ค์์ ๋ชจ๋๋ฆฌ์์ผ๋ก ์ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? ์ด๋ป๊ฒ 90%์ ๋น์ฉ์ ์ ๊ฐํ ์ ์์๊น์?
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ๋ง์ด๊ทธ๋ ์ด์
์ ๊ณผ ํ์ ์ํคํ
์ฒ๋ฅผ ๋น๊ตํ ๊ฒ์
๋๋ค.
+
+
+
+
+
+
+์๋ง์กด ํ๋ผ์ ๋น๋์ค ๋ชจ๋ํฐ๋ง ์๋น์ค๋ ๋ฌด์์ธ๊ฐ์?
+
+ํ๋ผ์ ๋น๋์ค ์๋น์ค๋ ์์ฒ ๊ฐ์ ๋ผ์ด๋ธ ์คํธ๋ฆผ์ ํ์ง์ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค. ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ ์ค์๊ฐ์ผ๋ก ์คํธ๋ฆผ์ ์๋์ผ๋ก ๋ถ์ํ๊ณ ๋ธ๋ก ์์, ๋์์ ์ ์ง, ๋๊ธฐํ ๋ฌธ์ ์ ๊ฐ์ ํ์ง ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค. ์ด๋ ๊ณ ๊ฐ ๋ง์กฑ์ ์ํ ์ค์ํ ํ๋ก์ธ์ค์
๋๋ค.
+
+๋ฏธ๋์ด ์ปจ๋ฒํฐ, ๊ฒฐํจ ๊ฒ์ถ๊ธฐ, ์ค์๊ฐ ์๋ฆผ์ 3๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
+
+- ๊ธฐ์กด ์ํคํ
์ฒ์ ๋ฌธ์ ์ ์ ๋ฌด์์ธ๊ฐ์?
+
+ ์ด์ ์ํคํ
์ฒ๋ ์๋ง์กด ๋๋ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ์๋น์ค๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ๋ ๋ฐ๋ ์ข์์ต๋๋ค. ํ์ง๋ง ๋๊ท๋ชจ๋ก ์ํคํ
์ฒ๋ฅผ ์คํํ ๋๋ ๋น์ฉ ํจ์จ์ ์ด์ง ์์์ต๋๋ค. ๋ค์์ ๊ฐ์ฅ ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ ๊ฐ์ง ์์
์
๋๋ค.
+
+1. ์ค์ผ์คํธ๋ ์ด์
์ํฌํ๋ก - AWS ์คํ
ํจ์๋ ์ํ ์ ํ๋ณ๋ก ์ฌ์ฉ์์๊ฒ ์๊ธ์ ๋ถ๊ณผํ๊ณ , ์ค์ผ์คํธ๋ ์ด์
์ ๋งค์ด๋ง๋ค ์ฌ๋ฌ ์ํ ์ ํ์ ์ํํฉ๋๋ค.
+
+2. ๋ถ์ฐ๋ ์ปดํฌ๋ํธ ๊ฐ์ ๋ฐ์ดํฐ ์ ๋ฌ - ์ธํฐ๋ฏธ๋์ดํธ ๋ฐ์ดํฐ๋ ๋ค์ ์คํ
์ด์ง์ ๋ค์ด๋ก๋๋ฅผ ์ํด ์๋ง์กด S3์ ์ ์ฅ๋ฉ๋๋ค. ๋ณผ๋ฅจ์ด ํฌ๋ฉด ๋ค์ด๋ก๋ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค.
+
+- ๋ชจ๋๋ฆฌ์ ์ํคํ
์ฒ๋ก 90% ๋น์ฉ ์ ๊ฐ
+
+ ๋ชจ๋๋ฆฌ์ ์ํคํ
์ฒ๋ ๋น์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ฌ์ ํ 3๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ์์ง๋ง ๋ฏธ๋์ด ์ปจ๋ฒํฐ์ ๊ฒฐํจ ๊ฐ์ง๊ธฐ๊ฐ ๋์ผํ ํ๋ก์ธ์ค์ ๋ฐฐํฌ๋์ด ๋คํธ์ํฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ๋ฌ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ต๋๋ค. ๋๋๊ฒ๋ ์ด๋ฌํ ๋ฐฐํฌ ์ํคํ
์ฒ ๋ณ๊ฒฝ ๋ฐฉ์์ 90%์ ๋น์ฉ ์ ๊ฐ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค!
+
+๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๊ธฐ์ ์
๊ณ์์ ์ ํ์ฒ๋ผ ๋ฒ์ง๊ณ ์๋ ๋งํผ ์ด ์ฌ๋ก๋ ํฅ๋ฏธ๋กญ๊ณ ๋
ํนํ ์ฌ๋ก ์ฐ๊ตฌ์
๋๋ค. ์ํคํ
์ฒ์ ์งํ์ ๋ํด ๋ ๋ง์ ๋
ผ์๋ฅผ ํ๊ณ ์ฅ๋จ์ ์ ๋ํด ๋ ์์งํ ํ ๋ก ์ ํ๊ณ ์๋ค๋ ๊ฒ์ ์ข์ ์ผ์
๋๋ค. ์ปดํฌ๋ํธ๋ฅผ ๋ถ์ฐํ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ถํดํ๋ ๋ฐ์๋ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
+
+- ์ด์ ๋ํด ์๋ง์กด์ ๋ฆฌ๋๋ค์ ์ด๋ค ๋ฐ์์ ๋ณด์์๊น์?
+
+ ์๋ง์กด CTO Werner Vogels: "**์งํ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์์คํ
**์ ๊ตฌ์ถํ๋ ๊ฒ์ ์ ๋ต์ด์ง ์ข
๊ต๊ฐ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฆฐ ๋ง์์ผ๋ก ์ํคํ
์ฒ๋ฅผ ์ฌ๊ฒํ ํ๋ ๊ฒ์ ํ์์
๋๋ค."
+
+Ex Amazon VP Sustainability Adrian Cockcroft: "ํ๋ผ์ ๋น๋์ค ํ์ ์ ๊ฐ **์๋ฒ๋ฆฌ์ค ํผ์คํธ**๋ผ๊ณ ๋ถ๋ฅด๋ ๊ธธ์ ๋ฐ๋์ต๋๋ค. ์ ๋ **์๋ฒ๋ฆฌ์ค ์จ๋ฆฌ**๋ฅผ ์นํธํ์ง ์์ต๋๋ค.".
+
+### ๋์ฆ๋ ํซ์คํ๋ ์ด๋ป๊ฒ ํ ๋๋จผํธ ๊ธฐ๊ฐ ๋์ 50์ต ๊ฐ์ ์ด๋ชจํฐ์ฝ์ ํ๋ํ ์ ์์๋์?
+
+
+
+
+
+
+1. ํด๋ผ์ด์ธํธ๋ ํ์ค HTTP ์์ฒญ์ ํตํด ์ด๋ชจํฐ์ฝ์ ์ ์กํฉ๋๋ค. ๊ณ ๋ญ ์๋น์ค๋ ์ผ๋ฐ์ ์ธ ์น ์๋ฒ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ๊ณ ๋ญ์ ์ ํํ ์ด์ ๋ ๋์์ฑ์ ์ ์ง์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ณ ๋ญ์ ์ค๋ ๋๋ ๊ฐ๋ณ์ต๋๋ค.
+
+2. ์ฐ๊ธฐ ๋ณผ๋ฅจ์ด ๋งค์ฐ ๋๊ธฐ ๋๋ฌธ์ ์นดํ์นด(๋ฉ์์ง ํ)๊ฐ ๋ฒํผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
+
+3. ์ด๋ชจํฐ์ฝ ๋ฐ์ดํฐ๋ Spark๋ผ๋ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ์๋น์ค์ ์ํด ์ด๊ทธ๋ฆฌ๊ฒ์ดํธ๋ฉ๋๋ค. ์ด ์๋น์ค๋ 2์ด๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๊ทธ๋ฆฌ๊ฒ์ดํธํ๋ฉฐ, ๊ทธ ์ฃผ๊ธฐ๋ ์ค์ ํ ์ ์์ต๋๋ค. ๊ฐ๊ฒฉ์ ๋ฐ๋ผ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๊ฐ๊ฒฉ์ด ์งง์์๋ก ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์ ์ด๋ชจํฐ์ฝ์ด ๋ ๋นจ๋ฆฌ ์ ๋ฌ๋์ง๋ง ๋ ๋ง์ ์ปดํจํ
๋ฆฌ์์ค๊ฐ ํ์ํ๋ค๋ ์๋ฏธ๋ ๋ฉ๋๋ค.
+
+4. ์ด๊ทธ๋ฆฌ๊ฒ์ดํธ๋ ๋ฐ์ดํฐ๋ ๋ ๋ค๋ฅธ ์นดํ์นด์ ๊ธฐ๋ก๋ฉ๋๋ค.
+
+5. PubSub ์ปจ์๋จธ๋ ์นดํ์นด์์ ์ด๊ทธ๋ฆฌ๊ฒ์ดํธ๋ ์ด๋ชจํฐ์ฝ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
+
+6. ์ด๋ชจํฐ์ฝ์ PubSub ์ธํ๋ผ๋ฅผ ํตํด ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์๊ฒ ์ค์๊ฐ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค. PubSub ์ธํ๋ผ๋ ํฅ๋ฏธ๋กญ์ต๋๋ค. ํซ์คํ๋ ๋ค์๊ณผ ๊ฐ์ ํ๋กํ ์ฝ์ ๊ณ ๋ คํ์ต๋๋ค. Socketio, NATS, MQTT, gRPC๋ฅผ ๊ฒํ ํ ๊ฒฐ๊ณผ MQTT๋ก ๊ฒฐ์ ํ์ต๋๋ค.
+
+์ด๋น ๋ฐฑ๋ง ๊ฐ์ '์ข์์'๋ฅผ ์คํธ๋ฆฌ๋ฐํ๋ LinkedIn์์๋ ๋น์ทํ ๋์์ธ์ ์ฑํํ๊ณ ์์ต๋๋ค.
+
+### Discord๊ฐ ์์กฐ ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ Discord์์ ๋ฉ์์ง ์คํ ๋ฆฌ์ง์ ์งํ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค:
+
+
+
+
+
+
+MongoDB โก๏ธ Cassandra โก๏ธ ScyllaDB
+
+2015๋
, ๋์ค์ฝ๋์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ ๋จ์ผ MongoDB ๋ ํ๋ฆฌ์นด ์์ ๊ตฌ์ถ๋์์ต๋๋ค. 2015๋
11์๊ฒฝ, MongoDB์ 1์ต ๊ฐ์ ๋ฉ์์ง๊ฐ ์ ์ฅ๋์ RAM์ด ๋ ์ด์ ๋ฐ์ดํฐ์ ์์ธ์ ์ ์ฅํ ์ ์๊ฒ ๋์์ต๋๋ค. ์ง์ฐ ์๊ฐ์ ์์ธกํ ์ ์๊ฒ ๋์์ต๋๋ค. ๋ฉ์์ง ์ ์ฅ์๋ฅผ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฎ๊ฒจ์ผ ํ๊ณ , ์นด์ฐ๋๋ผ๊ฐ ์ ํ๋์์ต๋๋ค.
+
+2017๋
, ๋์ค์ฝ๋์๋ 12๊ฐ์ ์นด์ฐ๋๋ผ ๋
ธ๋๊ฐ ์์๊ณ ์์ญ์ต ๊ฐ์ ๋ฉ์์ง๊ฐ ์ ์ฅ๋์ด ์์์ต๋๋ค.
+
+2022๋
์ด์๋ 177๊ฐ์ ๋
ธ๋์ ์์กฐ ๊ฐ์ ๋ฉ์์ง๊ฐ ์์์ต๋๋ค. ์ด ์์ ์์๋ ์ง์ฐ ์๊ฐ์ ์์ธกํ ์ ์์๊ณ ์ ์ง๋ณด์ ์ด์ ๋น์ฉ์ด ๋๋ฌด ๋ง์ด ๋ค์์ต๋๋ค.
+
+์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ต๋๋ค.
+
+- ์นด์ฐ๋๋ผ๋ ๋ด๋ถ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ LSM ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฝ๊ธฐ๋ ์ฐ๊ธฐ๋ณด๋ค ๋น์ฉ์ด ๋ ๋ง์ด ๋ญ๋๋ค. ์๋ฐฑ ๋ช
์ ์ฌ์ฉ์๊ฐ ์๋ ์๋ฒ์์ ๋์ ์ฝ๊ธฐ๊ฐ ๋ง์ด ๋ฐ์ํ์ฌ ํซ์คํ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
+- SSTable์ ์์ถํ๋ ๋ฑ ํด๋ฌ์คํฐ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ฉด ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
+- ๊ฐ๋น์ง ์ปฌ๋ ์
์ผ์ ์ค์ง๋ก ์ธํด ์ง์ฐ ์๊ฐ์ด ํฌ๊ฒ ์ฆ๊ฐํฉ๋๋ค.
+
+ScyllaDB๋ C++๋ก ์์ฑ๋ ์นด์ฐ๋๋ผ ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
๋๋ค. ๋์ค์ฝ๋๋ ๋ชจ๋๋ฆฌ์ API, Rust๋ก ์์ฑ๋ ๋ฐ์ดํฐ ์๋น์ค, ScyllaDB ๊ธฐ๋ฐ ์คํ ๋ฆฌ์ง๋ฅผ ๊ฐ์ถ๋๋ก ์ํคํ
์ฒ๋ฅผ ์ฌ์ค๊ณํ์ต๋๋ค.
+
+ScyllaDB์ p99 ์ฝ๊ธฐ ์ง์ฐ ์๊ฐ์ 15ms์ธ ๋ฐ๋ฉด ์นด์ฐ๋๋ผ๋ 40-125ms์
๋๋ค. p99 ์ฐ๊ธฐ ์ง์ฐ ์๊ฐ์ 5ms์ธ๋ฐ ๋ฐํด ์นด์ฐ๋๋ผ๋ 5-70ms์
๋๋ค.
+
+### ๋์์ ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ์ YouTube, TikTok ๋ผ์ด๋ธ, Twitch์์ ์ด๋ป๊ฒ ์๋ํ๋์?
+
+๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ์ ๋น๋์ค ์ฝํ
์ธ ๊ฐ ์ธํฐ๋ท์ ํตํด ์ค์๊ฐ์ผ๋ก ์ ์ก๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ช ์ด์ ์ง์ฐ ์๊ฐ๋ง ๋ฐ์ํ๋ค๋ ์ ์์ ์ผ๋ฐ ์คํธ๋ฆฌ๋ฐ๊ณผ ๋ค๋ฆ
๋๋ค.
+
+์๋ ๋ค์ด์ด๊ทธ๋จ์ ์ด๋ฌํ ์์
์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด ์ค์ ๋ก ๋ฌด์จ ์ผ์ด ๋ฐ์ํ๋์ง ์ค๋ช
ํฉ๋๋ค.
+
+
+
+
+
+
+1๋จ๊ณ: ๋ก์ฐ ๋น๋์ค ๋ฐ์ดํฐ๋ ๋ง์ดํฌ์ ์นด๋ฉ๋ผ๋ก ์บก์ฒ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ ์๋ฒ ์ธก์ผ๋ก ์ ์ก๋ฉ๋๋ค.
+
+2๋จ๊ณ: ๋์์ ๋ฐ์ดํฐ๋ ์์ถํ๊ณ ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ๊ฒฝ๊ณผ ๊ธฐํ ๋น๋์ค ์์๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค. ์์ถ ํ ๋์์์ H.264์ ๊ฐ์ ํ์ค์ผ๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ์ด ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด ๋์์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ํจ์ฌ ์์์ง๋๋ค.
+
+3๋จ๊ณ: ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๋ ๋ณดํต ๋ช ์ด ๊ธธ์ด์ ์์ ์ธ๊ทธ๋จผํธ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ๋ค์ด๋ก๋๋ ์คํธ๋ฆฌ๋ฐ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ํจ์ฌ ์งง์ต๋๋ค.
+
+4๋จ๊ณ: ์ธ๊ทธ๋จผํธํ๋ ๋ฐ์ดํฐ๋ ์คํธ๋ฆฌ๋ฐ ์๋ฒ๋ก ์ ์ก๋ฉ๋๋ค. ์คํธ๋ฆฌ๋ฐ ์๋ฒ๋ ๋ค์ํ ๋๋ฐ์ด์ค์ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์ง์ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ 'Adaptive Bitrate Streaming'์ด๋ผ๊ณ ํฉ๋๋ค. ์ฆ, 2๋จ๊ณ์ 3๋จ๊ณ์์ ์๋ก ๋ค๋ฅธ ๋นํธ๋ ์ดํธ๋ก ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค.
+
+5๋จ๊ณ: ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ CDN(Content Delivery Network)์ด ์ง์ํ๋ ์ฃ์ง ์๋ฒ๋ก ํธ์๋๋ฉฐ, ์๋ฐฑ๋ง ๋ช
์ ์์ฒญ์๊ฐ ๊ฐ๊น์ด ์ฃ์ง ์๋ฒ์์ ๋์์์ ์์ฒญํ ์ ์์ต๋๋ค. CDN์ ๋ฐ์ดํฐ ์ ์ก ์ง์ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ฌ์ค๋๋ค.
+
+6๋จ๊ณ: ์์ฒญ์์ ๋๋ฐ์ด์ค๋ ๋์์ ๋ฐ์ดํฐ๋ฅผ ๋์ฝ๋ฉ ๋ฐ ์์ถ ํด์ ํ๊ณ ๋์์ ํ๋ ์ด์ด์์ ๋์์์ ์ฌ์ํฉ๋๋ค.
+
+7, 8๋จ๊ณ: ๋์์์ ๋ค์ ๋ณด๊ธฐ ์ํด ์ ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๋ ์คํ ๋ฆฌ์ง ์๋ฒ๋ก ์ ์ก๋๋ฉฐ, ์์ฒญ์๋ ๋์ค์ ๋ค์ ๋ณด๊ธฐ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค.
+
+๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ์ ์ํ ํ์ค ํ๋กํ ์ฝ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
+
+- RTMP (Real-Time Messaging Protocol): ์๋๋ Macromedia์์ ํ๋์ ํ๋ ์ด์ด์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ๊ฐ๋ฐํ์ต๋๋ค. ์ง๊ธ์ ์ธํฐ๋ท์ ํตํ ๋น๋์ค ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. Skype์ ๊ฐ์ ํ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ง์ฐ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด RTC(Real-Time Communication) ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค๋ ์ ์ ์ ์ํ์ธ์.
+- HLS (HTTP Live Streaming): H.264 ๋๋ H.265 ์ธ์ฝ๋ฉ์ด ํ์ํฉ๋๋ค. Apple ์ฅ์น๋ HLS ํฌ๋งท๋ง ํ์ฉํฉ๋๋ค.
+- DASH (Dynamic Adaptive Streaming over HTTP): DASH๋ Apple ์ฅ์น๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
+- HLS์ DASH๋ ๋ชจ๋ ์ด๋ํฐ๋ธ ๋นํธ๋ ์ดํธ ์คํธ๋ฆฌ๋ฐ์ ์ง์ํฉ๋๋ค.
+
+## License
+
+This work is licensed under CC BY-NC-ND 4.0


