๐ ์ํคํ ์ฒ
๋ณํ, ์ ๋ฆฌ, ์ํ, ์ธก์
Created: 2020, 05 07 >Updated: 2026, 05 31์ํคํ ์ฒ ์ค๊ณ ๋ชฉํ
์ธํ๋ผ ๊ตฌ์ถ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ, ํผ๋๋ฐฑ์ ์ ๋ฐ์ ์ ์ง์ ์ผ๋ก ๋ฐ์ ํ๋ ํ๊ฒฝ์ ๋ง๋ค๊ฒ ๋ค.
์ข์ ์ํคํ ํธ๋ ์ธ๋ถ์ฌํญ์ ๋ํ ๊ฒฐ์ ์ ๊ฐ๋ฅํ ํ ์ค๋ซ๋์ ๋ฏธ๋ฃฐ ์ ์๋ ๋ฐฉํฅ์ผ๋ก ์ ์ฑ ์ ์ค๊ณํ๋ค.
-
ํด๋ฆฐ ์ํคํ ์ฒ
-
๊ฐ๋ฐ์์ ์ค์ํ ๋๋ชฉ์ ๋ณ๊ฒฝ ํ๋ ค๊ณ ํ ๋ ๊ทธ ๋ถ๋ถ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋๋ก ์ค๊ณํด๋๋ ๊ฒ๊ณผ ์ผ๊ด์ฑ
- ๋ง๋ถ์ด์๋ฉด ์๋ก์ด ๊ฒ์ ์ถ๊ฐํ๋ ค๊ณ ํ ๋ ์ ์ฝ์์ด ํธํ๊ณ ๋น ๋ฅด๊ฒ ์ถ๊ฐํ ์ ์์ด์ผ ๋ณ๊ฒฝ์ด ์ฌ์ด ๊ฒ
-
๋ณํ๋ ๊ฒ์ ์ต๋ํ ๊ฒฐ์ ์ ๋ฏธ๋ฃฌ๋ค
-
์๋ฒฝ๋ณด๋ค๋ ์์
-
๋ชจ๋ ๊ฒ์ ํธ๋ ์ด๋์คํ
-
ํ๊ฒฝ์ ๋ง์ถ๋ ๊ฒ์ด ๊ฐ๋ ฅํ ๊ฒ๋ณด๋ค ๋ซ๋ค
์ํคํ ์ฒ ํ์ ๊ณ ๋ ค์ฌํญ
- ๋ณํ์ง ์์ ๊ฒ๊ณผ ๋ณํ ๊ฒ์ ์ ํด๋๊ณ ์กฐ์ ํ๋ค.
- ๋ณ๊ฒฝํ๊ธฐ ์ฌ์ด ํ๊ฒฝ์ด ๋๋๋ก ์ค๊ณํ๋ค
- ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๋ง๋ ๋ค
- ์ด๋ค ํญ๋ชฉ์ ๋ด์ผ ์ด๊ฒ์ด ์ ์งํ๋๋์ง๋ฅผ ํ์ธ ํ ์ ์์ด์ผ ํ๋ค
- ๋ณํ์ ๊ธฐ๋ก์ ์ฑ๊ฒจ์ผ ํ๋ค (following changed thing)
- ๋ฐฑ์ ์ ํด์ผ ํ๋ค. ๋ฐฑ์ ์ ๋ต์ ์ธ์์ผ ํ๋ค
- ์์คํ ๊ตฌ์ฑ์ ํ๋ํ๋ ๊ฒ์ฆํ๋ฉฐ ๋์ ํ๊ธฐ
- ์ฌ์ฌ์ฉ์ฑ
- ์คํจ๋ฅผ ๋นจ๋ฆฌ ํ๋ค. ์คํจ ์ํฉ์ ๊ณ ๋ คํ๋ค.
ํ ํฌ๋์ปฌ ๊ณ ๋ ค์ฌํญ
- local loading file time > 0.4s
- external network time > 0.4s. - total 0.8s
- ๋ฐฐํฌ์ฉ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ ๋ค.
- ๋ฐฐํฌ์ฉ ์ด๋ฏธ์ง๋ ํญ์ ์ฒ์๋ถํฐ ์๋ก ๋น๋๋ผ์ผ ํ๋ค. ๋ฎ๊ณ ๋ฎ๋ ๋ฐฉ์์ ๋ถํ์ค์ฑ์ ์ฆ๊ฐ์ํจ๋ค.
- ๋๋ฉ์ธ์ ์๊ฐํ์. ๋๋ฉ์ธ์ด ๋์์ธ์ ๋ง๋ ๋ค.
- auto scaling
- auto recovery
- ๊ณ ํจ์จ ์ ๋น์ฉ
- ๋ฎ๋ ๋ฐฉ์์ธ ํ๋ ์์ํฌ๋ณด๋ค ๋ถ์ด๋ ๋ฐฉ์์ธ ์ด๋ํฐ ๋ฐฉ์์ด ์ข๋ค
- ๋ด๋ถ์ ์ผ๋ก๋ ํจ์จ์ ์ต๋๋ก ํ๋ ์ฌ๋๋ค์ ์ซ๋น ์ง ๊ฒ๋ณด๋ค ๋๋ํ ๊ฒ์ ๋ ์ข์ํ๋ ์ ์ ์๊ฐํ๋ค
- User experience searchable website
- ์๋น์ค๋ ๊ด๋ฆฌ์๊ฐ ๊ด๋ฆฌํ์ง๋ง๊ณ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌํ ์ ์๊ฒ ํ๋ฉด ์ข๊ฒ ๋ค
- ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ์ง ๋ง๊ณ ๋ชจ๋๋ก ๋ง๋ค ์ ์๊ฒ ํ๊ณ ์ฌ๋ฌ ๊ฐ ์ ํํ ์ ์๋๋ก ํ๋ค
- ์๋ก์ด ํด์ด ๊ด๋ฆฌ์ ์ ์ค์ด๊ณ , ํธ์๊ธฐ๋ฅ์ ๋๋ฆด ์ ์์ผ๋ฉด ์ข๊ฒ ๋ค.
- ๋ณต์ก๋๋ ๋ฎ์ถ๊ณ ์ถ๊ณ ์๋น์ค๋ ๋ง์ด ๋ง๋ค๊ณ ์ถ๋ค
- SOLID - Open Closed Principle
- ๋ณํ๋ฅผ ์ต์ํ ํ๊ธฐ ์ํด ๋ณํ ์์๊ฐ๋ฅํ ๋ถ๋ถ์ ์ค๊ณ์ ๋๋ ๋์์ผ ํ๋ค๋ ์์น์ธ๋ฐ ๊ทธ ๊ธฐ์ค์ ์ ์ด๋ป๊ฒ ์ค์ ํ๋๋๊ฐ ์ค์ํ ๊ฒ ๊ฐ๋ค
- Devops#server architecture to using some company service
- ํผ์ฒ ํ๋๊ทธ ์ฌ์ฉ
- ํผ์ฒํ๋๊ทธ๋ aws parameter store๋ฅผ ์ฌ์ฉํด์ api๋ก ๊ด๋ฆฌํด๋ ๋๊ฒ ๋ค ๋๋ค๋ก๋ ํด๋ ๋๊ณ ์์ฐ
- SSOT
- SPOF
- SSOT๋ก CoCํ๊ฒ SPOF์์ด
- ์๋น์ค๊ฐ ์ปค์ ธ๊ฐ์ ๋ฐ๋ผ ์ง์ ๊ตฌํํด์ผํ๋ ๊ธฐ๋ฅ
- ๊น ๋ ํฌ์งํ ๋ฆฌ > gitlab์ด ์์ฒด ์๋ฒ ๊ตฌ์ถ ๊ฐ๋ฅํ๋ค
- ci ํด
- ์๋น์ค๋ก ์ ๊ณต๋๋ ์ํํธ์จ์ด๋ค
- ์ต์ํ ์ด์คํ๊ฐ ๋๋๋ก ํด์ผํ๋ค
Check Point
ํ๋ก์ ํธ ์ ํ๋ฒ์ฉ ์ ๊ฒํ๊ธฐ
- ์์ ๋ฐฐํฌ vs ์ ๊ธฐ ๋ฐฐํฌ
- ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธ ๊ฐ๋ฅ
- ์๋ฌ ํ๋ฅ ์ฆ๊ฐ - ๋น ๋ฅธ ๋กค๋ฐฑ์ผ๋ก ์ํ๋ ๋ฎ์ถ ์ ์์
- vs
- ๋๋ฌด ํฐ ๋ฐฐํฌ ๋จ์๊ฐ ๋ ์ ์์
- ํ ์คํธ ์ํ์ ๊ฒฐ๊ณผ์ ์ค์ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅผ ์ ์์
- ๋ฐฐํฌ์ผ์์ ์๋ฌ ์ง์ค
- ๊ฐ์ ์ฑ์ ์ผ๋งํผ ํ ์ง, ์์จ์ฑ์ ์ผ๋งํผ ํ ์ง
- ์
๋ฌด๊ฐ ๊ฐ๋ฅํ์ง ์๋์ง ํ๋จํ ๋ฐฉ๋ฒ
- ์ ๋ฌด๋ฅผ ๋ฐ์ผ๋ฉด ์ด๋ป๊ฒ ์์ํ๋ฉด ์ข์์ง? ๊ด๊ณ๊ฐ ์ด๋ป๊ฒ ๋์๋์ง ์์์ผ ํ๋๋ฐ..
- ์ฝ๋์ ์ค์ ์ ๋ถ๋ฆฌํ๋ค. divide code / config file
- CoC ๋ฅผ ์ํด ์ค์ ์ ์ฝ๊ฒ ํ ๋ฐฉ๋ฒ
- ์ฌ์ฉ์ ์คํ์ ์ฝ์ด์ ์์ผ๋ฉด ์๋ฒ ์คํ์ ์ฌ์ฉํ๋ค.
- ์๋ฒ ์คํ์ ์ฌ์ฉ์๊ฐ ๊ฑด๋๋ฆฌ์ง ์๊ฒ ํ๋ค.
- nagios๋ ์ด๋ ๊ฒ ๋์์๊ณ , vim์ด๋ zsh๋ฑ ์ปค๋งจ๋๋ผ์ธ ํด๋ค๋ ์ด๋ ๊ฒ ๋์๋ค. odoo๋ ํ์ผ์ ๋ง๋ค์ด์ ์ค๋ฒ๋ผ์ด๋ ๋๊ฒ ํด๋จ์ง๋ง ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ฐ๋ก ๊ฑด๋๋ฆด ์๋ ์์๋ค.
- CoC ๋ฅผ ์ํด ์ค์ ์ ์ฝ๊ฒ ํ ๋ฐฉ๋ฒ
- ์์ฃผ ๋ณํ๋ ๊ฒ๊ณผ ์์ฃผ ๋ณํ์ง ์๋ ๊ฒ ๊ณ ๋ คํ๊ธฐ
- ์์ฃผ ๋ณํ์ง ์๋ ๊ฒ์ ์ ๊ฒฝ ์์จ๋ ๋๋๋ก ํ๊ธฐ
- ๊ณ์ฐ ์ค์ฌ ๊ตฌ์กฐ(cpu) vs ๋ฐ์ดํฐ ์ค์ฌ ๊ตฌ์กฐ
- ๋๋ ํ ๋ฆฌ ๋จ์๋ฅผ ๊ธฐ๋ฅ๋ณ๋ก ํ ์ง, ์ญํ ๋ณ๋ก ํ ์ง
- ์ฝ๋ ๋ถ๋ฆฌ ๊ธฐ์ค
- ํ์ฌ์์๋ ๋ ์ด์ด๋ณ๋ก ๋๋ด๋ค
- ๋ง์ดํฌ๋ก์๋น์ค์์๋ ๊ธฐ๋ฅ๋ณ๋ก ๋๋๋ค
- monorepo vs microrepo
- ๊น์ด vs ๋์ด
- ํ ๊ตฌ์กฐ์ ๋ฐ๋ฅธ๋ค
- ํ๋ก์ ํธ๋ณ ํ vs TF ํ vs ์ญํ ๋ณ ํ vs ๊ธฐ๋ฅ๋ณ ํ
- ๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ฒฉ์์ผ ํ ๋ ํฌ ์์ ๋์ง
- ๋๋ ํ ๋ฆฌ๊ฐ ์ค์ฒฉ๋๋ฉด ํ๋ก์ ํธ๋ฅผ ๋ถ๋ฆฌ ์์ผ ๋ ํฌ๋ฅผ ๋๋์ง
- ํ์ฌ์ ์ํํธ์จ์ด๋ฅผ ์์ฒด์ ์ผ๋ก ๊ตฌ์ถํ ๊ฒ์ ์ฐ๋๋, ์ ๊ฐ์ ธ๋ค ์ฐ๋๋
- ๋์ ์ํคํ ์ฒ๋ฅผ ๋๋ฌด ์ข์ํ๊ฒ ๋๋ฉด ๋ค๋ฅธ ์ํคํ ์ฒ๋ฅผ ๊ฑฐ๋ถํ๊ฒ ๋๊ฑฐ๋ ๋ณด๊ธฐ ํ๋ค์ด์ง์ง ์์๊น
- ๋ด ์ํคํ ์ฒ๋ฅผ ๋ง๋ค๊ธฐ๋ณด๋ค ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํคํ ์ฒ๋ฅผ ๋ฐ์๋ค์ด๋๊ฒ ๋์๊น
- About_Development#์ฟ ํก์ด ์์ฒด์ ์ผ๋ก ๋ง๋ ์ํท๋ธ๋ ์ด์ปค์ api gateway
- ํ๋์ ํด๊ณผ ์ข
์์ฑ
- ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฐ๋ ๊ฒ์ด ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ทผ๋ฐ ๊ทธ๋ฌ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค์ ์ข ์์ฑ์ด ์ฌํ๊ฒ ๊ฑธ๋ฆฐ๋ค
- ๊ฐ๋ฐ์ docker compose๋ก ์ด์์ kubernetes๋ก ํ๋๋ก ์ฌ๋๋ค์ ์ ๋ํ ์ ์์๊น? ๋๋ ์ด๋ ๊ฒ ์์ ํ๊ณ ์๋๊ฐ?
- ๊ฐ์ฒด๊ฐ 2๊ฐ ์ด์ ์๊ธฐ๋ฉด ์ค๊ฐ์ ๋ฒํผ๊ฐ ๋ค์ด๊ฐ๋ฉด ์์ ์ ์ด๋ค. ๊ทผ๋ฐ DB์ ์น์ ํ๋๋ก ๋ด์ผํ๋ ค๋
์ค๊ณ
- ์๋น์ค ์ ํ - ์ด๋ค ๋๋ฉ์ธ์์ ์ด๋ค ๋น์ฆ๋์ค๋ฅผ ํ๋์ง, ๊ทธ๊ฒ์ ๋ํ ํน์ฑ
- ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ ์ ์ธก์
- IaC
ํ์ฌ ์ธํ๋ผ ์ต์ด ์ธํ ์
๋ด๊ฐ ์คํํธ์ ์ ์์ํ๋ค๋ฉด?
- ์์คํ ์ธํ๋ผ๋ฅผ ์ถ๊ฐํ๋ค (๋ชจ๋ํฐ๋ง, ๋ก๊น , CDํด)
- ์งํ, ํต๊ณ๋ฅผ ํ์ธํ ์ ์๋๋ก ํ๋ค - GA, Log Analysis Report
- ๋ฐฐํฌ๋ฅผ ์๋ํํ๋ค
- ํ๊ฒฝ ๋ถ๋ฆฌ - ์คํ ์ด์ง/์ด์
- ํผ์ฒ ํ๋๊ทธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ
- ์ ์ ๊ด๋ฆฌ๋ฅผ ์ธํ๋ผ๋ก ํ ์ง ์๋น์ค๋ณ๋ก ํ ์ง
์ํคํ ์ฒ
์ผ๊ด์ฑ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
๊ฐ ํ์ฌ๋ง๋ค ์ ๋ง๋ค์ ์ํคํ ์ฒ๊ฐ ์์ด์ ๊ฐ๋ฐ์๋ ๊ทธ ์ํคํ ์ฒ๋ฅผ ํ์ ํด์ผํ๋ค. ๊ทธ๋ ๋ค๋ฉด ํ ๋ถ๋ถ์ ์์์ ๋ ๋ค๋ฅธ ๋ถ๋ถ๋ ๊ทธ์ ๋น์ทํ๊ฑฐ๋ ์ผ๊ด์ฑ์ด ์ ์ ์ง๋์ด ์๋ ๊ตฌ์กฐ๋ผ๋ฉด ์ฝ๊ฒ ์ตํ ์ ์๋ค. ์ด๋ค ์ํคํ ์ฒ์ธ์ง๋ ๊ทธ ๋ค์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค. ์ผ๋จ ์ผ๊ด์ฑ์ด ์์ผ๋ฉด ๊ฐ๋ ์ฑ์ด ์ฌ๋ผ๊ฐ๊ณ , ์ด๊ฒ์ด ์ํํธ์จ์ด๋ฅผ ์ข๊ฒ ๋ง๋ค์ด์ค๋ค.
์ค์ฌ๋ง ๋จ๊ธด๋ค
๊ฐ๋ฐ ๋ก์ง, ์ค์ ๋ฌธ์ ๊ด๋ฆฌ ์๋น์ค, ์ฝ๋ ์ ์ฅ์, ๋ฐ์ดํฐ ์ ์ฅ์
์ธํ๋ผ ๊ฐ๋ฐ์์ ๊ด์ ์์ 3 ์์
์ธํ๋ผ - ๋ฐ์ดํฐ - ์๋น์ค
์๋น์ค ์์๋ ๋ฐฑ์๋, ํ๋ก ํธ, ๋์์ธ, ๊ธฐํ ๋ฑ๋ฑ์ด ๋ ๋ฐ๋ก ์์ ๊ฒ์ด๋ค. ์ธํ๋ผ์๋ ์ํ๋ฆฌํฐ, ๋ก๊น ๋ฑ๋ฑ์ด ์๊ณ , ๋ชจ๋ ์์์ QA์ ํ ์คํธ๊ฐ ์๋ค.
ํ๋ก์ ํธ ์ํคํ ์ฒ
- ๋ทํ๋ฆญ์ค ๋ชจ๋ธ - ์ ์ฒด๊ฐ ํ๋๋ก ๋ฌถ์ฌ์๋ค
- ๋ค์ด๋ฒ ๋ชจ๋ธ - ๊ฐ ์ญํ ๋ณ๋ก ๋ถ๋ฆฌ๋์๋ค
- ๋ฆฌ๋๋ถ์ค ๋ชจ๋ธ - ๋ฐ์ดํฐ๊ฐ ๋ฌถ์ฌ์๋ค
๊ทธ๋์์ ์ํคํ ์ฒ ๋ชจ๋ธ
- 3 layer
- MVC - MVVC - MTV
- ๋คํธ์ํฌ ๋ ์ด์ด
- 12 Factor app
- MSA
- DDD
- JAM stack
- Clean Architecture
- SOA
๊ทธ๋ฆฌ๊ณ
- ์ก๊ฐํ ์ํคํ ์ฒ
- DCI data, context, interface ์ ์์ค ์ฝํ๋ฆฌ์ธ
- BCE bounded control entity
- https://ahnheejong.name/articles/package-structure-with-the-principal-of-locality-in-mind/
- https://mingrammer.com/translation-structuring-applications-in-go/
- https://geminikim.medium.com/์ง์-์ฑ์ฅ-๊ฐ๋ฅํ-์ํํธ์จ์ด๋ฅผ-๋ง๋ค์ด๊ฐ๋-๋ฐฉ๋ฒ-97844c5dab63
- https://overthecode.io/the-meaning-and-limits-of-atomic-design-from-a-software-design-perspective/
SOA, MSA, DDD
service oriented architecture
- ์ค๊ฐ์ enterprise service bus๋ฅผ ๋ฌ์ ์๋น์ค ๊ฐ ๊ณต์ ๋ฅผ ํ๋ ค๊ณ ํ์ผ๋, ๋น์ ์๋์ ํ ๊ตฌ์กฐ๊ฐ ๋ณํ์ ์ฌ๋น ๋ฅด๊ฒ ๋์ํ์ง ๋ชปํ๊ณ , MSA์ ๋น์ทํ ๋ชฉํ๋ฅผ ๊ฐ์ก์ผ๋ ์ฑ๊ณตํ์ง ๋ชปํ๋ค.
- MSA์ ํต์ฌ์ ํต์ ์ฒ๋ฆฌ์ด๊ณ , ์ด ์ฒ๋ฆฌ ํ๋ฆ์ ๋ง๋ค์ด๋ด๋ ์๋น์ค ๋ฉ์๊ฐ ๋ฑ์ฅํ๋ค. ๋ง์ดํฌ๋ก ์๋น์ค๋ ์๋น์ค์ ์๊ฐ ๋ง๊ณ , ์ด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค
์ข์ ์ํคํ ์ฒ๊ฐ ์ฑ๊ณต์ ๋ณด์ฅํ์ง๋ ์์ง๋ง ๋์๋ฉด ๋งํ๋ค
- ๋์์ง ์๊ฒ ํ๋ ๊ฒ์ ๋์ผํ๋ค
- ์๋ฒฝ๋ณด๋ค๋ ์์
- DDD๋ ์ฝ๊ฒ ์ค๋ช ๊ฐ๋ฅํ๊ฐ? ๋ณต์กํ ๊ตฌ์กฐ๋ผ๋ ์ฝ๊ฒ ์ค๋ช ๋๋ฉด ๋๋ค. ์ฝ๊ฒ์ค๋ช ๋์ง ์์ผ๋ฉด ๋์๋ค
- ๊ฐ์ฒด์งํฅ์ ๋์ด ์ธ๊ฐ์งํฅ ์ธ๊ฐ์ค์ฌ
- ๋์๋ฉด ์๋๋ค๋๊ฑธ ์๊ฐํ์ง๋ง ์ํฐํจํด์ ํผํ๋ ๋ฐฉ์ด์ ์ ๊ทผ๋ณด๋ค๋ ์ข์๊ฑธ ์ฐพ๋ ๊ณต๊ฒฉ์ ์ ๊ทผ์ ํ๊ณ ์ถ๋ค
- ์ํคํ ์ฒ๊ฐ ์์คํ ๊ตฌ์ฑ์ ๋ค ์ ํ๋๊ฒ ์๋๋ผ ์ดํด๊ด๊ณ์์ ๋จผ์ ์๊ตฌ์ฌํญ์ ์ ์ํ๊ณ ํ์๋ค๊ณผ ๊ธฐ์ ์ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๋ ผํ๊ณ ํจํด์ ๊ฐ์ด ์ฐพ๊ณ ์ ํ๊ฒ ๋๋ ๊ฑด๊ฐ๋ณด๋ค. ์ถฉ์ญํ์ฅ๋์ ์ฟฐ์ค๋ฅผ ์ด๋๋๊ฒ ์ํคํ ์ฒ์ ๋ชจ์ต์ ๊ทธ๋๋ก ๋ณด์ฌ์ค๊ฑฐ ๊ฐ๋ค ์ ๊ธฐ์ตํด์ผํ ๋ฏ
- ํธ์ ๊ฐ๋ฐํ๋๊ฒ ํ๋ก์ ํธ ์งํํ๋ฉด์ ์ค๊ฐ์ ๋ฐ๋ฐ์ด ์๊ธด ์ฌ๋ก์ธ๊ฑฐ ๊ฐ๋ค ํธ์ ๊ฐ๋ฐ ๊ณผ์ ์ ์ ๋ฆฌํ๋ ๊ฒ๋ ์ข์๋ฏ. Nhn์ ์๋ง์ ์์ฒญ์ ๋ณด๋ธ๊ฒ๋ถํฐ ์๋ก์ด api ๊ฐ๋ฐฉ์ ์์ฒญํ๊ณ ์ฌ์ฉํ ๊ฒ๊น์ง
๊ฐ๋ฐ์์์ ์ํคํ ํธ๋ก - ๋ง์ดํด ํฌ๋ง
์ํคํ ์ฒ
์ ์ฑ ๊ณผ ์ธ๋ถ์ฌํญ์ผ๋ก, ๋ฃฐ๊ณผ ๊ฐ์ด๋๋ฅผ ๊ตฌ๋ถ. ์ํคํ ์ฒ์ ๋ชฉํ๋ ์ ์ฑ ๊ณผ ์ธ๋ถ์ฌํญ์ ์ ์ ํ ๊ตฌ๋ถํด ์ธ๋ถ์ฌํญ์ ๊ฒฐ์ ์ ์ต๋ํ ๋ฏธ๋ฃฐ ์ ์๊ฒ ํ๋ ๊ฒ
- ํด๋ฆฐ ์ํคํ ์ฒ
์ํคํ ์ฒ ๊ตฌ์ถ์ ๋ชฉํ์ ์ ์๋ค ์ข์ ๊ธฐ์ค์ ์ ๋ง๋ค์ด์ ๊ทธ ๊ธฐ์ค์ ์ ๊ณ์ ๊ฐ์ ํด๋๊ฐ๋ ๊ฒ์ด ์ต์
ํฐ ๊ทธ๋ฆผ > ์์ ๊ทธ๋ฆผ
์ ํ๊ณผ ์ง์ค, ์ ์ฐํ๊ณ ์ตํฉ์ ์ธ ํ๊ฒฝ - ๋ ๊ฐ์น๋ฅผ ์ด๋ป๊ฒ ์ ์ตํฉํ ์ ์์๊น
- ๋ถ์ฐํ ํ๋ ๊ฒ์ด ์๋์ ํ๋ฆ
- ์ฌํํ๊ฒ ์ ์ง. 0์์ 10์ ์ฌํ์ด ์๋๋ค. 100์์ 10์ด ์ฌํ
- ์ ํ์ด ํ์ํ๋ค
์ค์ ๊ฐ๋ฅํด์ผํ๊ณ ํ๋ฌ๊ทธ์ธ ๋ฐฉ์์ผ๋ก ๋์
log data ๋ db table ๋ฑ์ ์ด๊ธฐ์ ์ค๊ณํด์ ์ญ ์จ์ผํ๋ ๊ฒ๋ณด๋ค๋ ๋ณ๊ฒฝ์ ์ ์ฐํ์ผ๋ฉด ์ข๊ฒ ๋ค ๋ณ๊ฒฝ์๋ ๊ทผ๊ฑฐ๊ฐ ํ์ํ์ง๋ง, ์ค์ ๋ก ๋ณ๊ฒฝํ ๋๋ ์ฝ๊ฒ ํ ์ ์๋๋ก. ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ฝ์ง ์๋ค ๋ณ๊ฒฝ์ ์ ์ฐํ ๊ฒ๋ค์ ๋ฌด์์ด ์์๊น
๊ด๋ฆฌ์์๊ฐ ๋ง์์ง๋ฉด ์ผ๊ด์ฑ์ด ๊นจ์ง๊ธฐ ์ฝ๋ค ์ฝ๋๊ฐ ๋ง์์ง๋ฉด ๊ณ ์ณ์ผํ๋ ์ง์ ์ด ๋์ด๋๋ค
ํ ๋ถ๋ถ์ ๋ณํ๋ฅผ ์ํด ๋ค๋ฅธ ๋ถ๋ถ์ ์ ๊ฒฝ ์ฐ์ง ์์์ผ ํ๋ค. ํ ๋ถ๋ถ์ ๋ณํ๊ฐ ๋ค๋ฅธ ๋ถ๋ถ์ ์ํฅ์ ์ฃผ์ง ์์์ผ ํ๋ค.
์ฝ๋๋ ์ด์์
- controller, Service, Domain, entity
- controller์์๋ 1๋จ๊ณ if์ ๋ช ๋ฃํ ํจ์๋ค๋ก๋ง ์ด๋ฃจ์ด์ ธ์๋ค
- service์๋ ๊ฐ๋จํ ์ ๋ํจ์๋ฅผ ๋ฌถ์ ๋ก์ง๋ง ์๋ค
- domain์๋ ๊ฐ๋จํ ์ ๋ํจ์๋ค๋ง ์๋ค
- entity๋ ๋ฆฌํด๊ฐ๊ณผ ๋ฑ๋ฑ์ ๊ฐ์ธ์ฃผ๋ ๋ํผ๋ฅผ ๊ฐ์ง๊ณ ์๋ค
- controller์ service ์ฌ์ด์ ์ธ์ธํ ์๋ฌ ์ฒ๋ฆฌ ๋ก์ง์ facade์ ๋ค์ด๊ฐ๋ค
์ ์ง ๋ณด์๊ฐ ์ ๋๊ฒ ํ๋ ค๋ฉด?
- ์ ํํ ์ ์ฑ ์ ํตํด ์ญํ ์ ๋ถ๋ฆฌ, ์์ํ๋ค
์๋ํ
์๋ํ๋ ์ค๋ฅ๋ฅผ ์ผ์ผํค๊ธฐ ์ฝ๋ค ์กฐ์ฌํ ๋์ ํด์ผํ๋ค
๋ฉํ์ ์ผ๋ก
ํ๋ฆ๋ง ๋ง๋ค๊ณ ์ธ๋ถ์ฌํญ์ ์๋ํํด์ ์์์ ์ผํ๊ฒ ํ๋ค
service output์ด feedback์ด ๋๋๋ก
- ํ ์คํธ ๋ฌธ์ ์๋ํ
- ๋ชจ๋ํฐ๋ง ๋ฌธ์ํ
- api ๋ฌธ์ํ
์ ๋ฌด์๋ํ ํ๋ฒ์ ์ ์๋๋๊ฐ
- ์๋ก์ด ์ ๋ฌดํ๊ฒฝ์ ์ดํ์ผ ํจ
- ์์ ๋ก ๊ด๋ฆฌ๋๋ ๋ฐ์ดํฐ. ์๊ธฐ๋ก ์ ๋ ฅํด์ผ๋ง ํ๋ ๋ฐ์ดํฐ
- ์๋ ๋ฒ์๊น์ง๋ง ์ต์ ํ ๋๊ณ ๋์น ๋ถ๋ถ์ด ์์ผ๋ฉด ๊ฑฐ๊ธฐ๊ฐ ๊ผฌ์ธ๋ค.
- ๊ธฐ์กด ์์คํ ์ ๋ค ํ์ ํ๊ธฐ ํ๋ค๋ค. DB ํ ์ด๋ธ ๋ช ์ธ์ ๋ฉ๋ด์ผ ๋ถ์กฑ
- ๋ณด์์ ์ธ ์์
์๋ํ์ ๋ฌธ์ ์ (์๋ํ๋ณด๋ค๋ ์ผ๊ด์ ์ฉ์ ๋ฌธ์ ์ ์ผ ์ ์๊ฒ ๋ค)
์๋์ด ์๋์ผ๋ก ์ ๋์์ํ๋ ๊ฑธ ์์ฃผ ๋ณด๊ณ ์ค๋งํธ๊ฐ ์ค๋งํธํ์ง ์์๊ณ ํ๋ฒ์๊ฐ ํ๋ฒ์ ๋์ง ์์๋ค ์ ์ฒด๋ฅผ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ๋ณํ์ํค๋ ๊ฒ๋ ํญ์ ์คํจํ๋ ๊ฒ๋ค์ด ๋์จ๋ค.
AI์ ์๋ํ
- ์ฌ๋์ด ํ๋ฉด ๋๋ฝ์ด ์๊ธธ ์ ์๋ค
- ์คํฌ๋ฆฝํธ๋ก ํ๋ฉด ๊ธฐ๊ณ์ ์ผ๋ก ๋์ํ๋ค. ์ ํด์ง ํผ์ด ์๋๋ฉด ์ด์ํ๊ฑธ ๋ง ๊ฐ์ ธ์จ๋ค
- AI๋ก ํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋งค๋ฒ ๋ค๋ฅด๊ณ ์ ํํ์ง ์๋ค
CSP
Communicating Sequential Processes golang์ groutine์ ๋์ ๋ฐฉ์์ด์, ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋์๋ ์์๋ค์ด ์๋ก ํต์ ํ ๋ ํจ๊ณผ์ ์ธ ๋ชจ๋ธ. ๋ง์ดํฌ๋ก์๋น์ค์์ ์๋ง์ ์๋น์ค๋ค ๊ฐ์ ์ฐ๊ฒฐ๊ณผ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํ hashicorp์ ์ ํ
๊ด๋ จ ๋ฐฑ๋งํฌ
ํ์ํ ์ปดํฌ๋ํธ
์ต์ ์ํคํ ์ฒ๋ฅผ ๋จผ์ ์ค๋นํด๋๊ณ ๊ฑฐ๊ธฐ์ ํ์์ ๋ฐ๋ผ ํ๋์ฉ ์ถ๊ฐํ๋ค. ๊ท๋ชจ๊ฐ ์ผ์ ๋ฒ์ ์ด์ ์ปค์ง๋ฉด ๋ค์ ํจ๋ฌ๋ค์์ ์ค๋นํ๋ค.
component
๊ธฐ๋ณธ
- db
- backend: lambda
- frontend: nettlify/now/surge
- file: s3
- image: cloudinary
- con: ifttt
- ํ/์บ์: redislabs
- design: figma
- domain
- dns
- MQ
์ถ๊ฐ
- ์คํ ์ค์ผ์ผ๋ง 2~8๊ฐ ํ๋๋ก ์ ์ง
- ingress - ๋ด๋ถ ์์ดํผ ์ ๋ฌ์ฉ
- tls์ธ์ฆ์, failover, ๋ก๊น , ๋ชจ๋ํฐ๋ง
- ์๋dns, ssl, ๋ก๋๋ฐธ๋ฐ์ฑ: CloudFlare Proxy -> AWS L4 NLB
- cdn
- secret - kubeseal
- clickhouse - ๋ถ์๋ฐ์ดํฐ
- ๋ชจ๋ ์ธํ๋ผ ์ฝ๋๋ฅผ ํ ๊ณณ์ ์ ์ฅํด๋๊ณ ๋์ด๋ค์ฐ๊ธฐ?
- ์ค๋ฅ ์ถ์
- profiling - cProfile, snakeviz
- ์๋ฒ ๋ถํ ๋ถ์ฐ - haproxy and zookeeper
- ๋๊ธฐ์ด
- ๋ก๋ ๋ฐธ๋ฐ์ฑ ํ ํฌ์ค์ฒดํฌ ํด์ ์ด์ ๋ฐ์์ ์๋ ์ฌ์คํ ์คํฌ๋ฆฝํธ ์คํ
- ์๋ฒ ์ฆ์ค ํ์ฅ ์ฉ์ด
- ๋ค์ด๋๋ ๋์ ๊ฐ๋ฅ(failover)
- when would you use request/reply and publish/subscribe
- ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ฒ
Security
- how to manage ssh key?
- make every each computer
- keep other storage
jwt, oauth, session
- token can make easy check current users count?
double check, error handling, logging, security
reference
SSH
ssh ์ ์ ํ ์๊ธฐ๋ ํ์ผ
- .known_hosts
- .authorized_keys
- authorized_keys์๋ pubํค๊ฐ ๋ค์ด๊ฐ๋ค. ์๋ฒ์ธก์.
SSH ์ TLS๋ฅผ ๊ฐ์ ์๋ฆฌ๋ก ์๊ฐํ๋ค.
- ssh์๋ public_key์ private_key๊ฐ ์์ง ์์๊ฐ
- TLS์๋ crt์ key๊ฐ ์๋ค,
- TLS = RSA + ๋์นญํค
- HTTPS๋ HTTP + TLS
- ํด์ ํจ์ MD5, SHA <-> ๋์นญํค AES, ๊ณต๊ฐํค RSA
SSL/TLS
- HTTP๋ฅผ HTTPS๋ก ๋ง๋ค์ด์ฃผ๋๊ฒ TLS ์ฐ๋ํ๋ ๊ฑฐ
- SSL์ ์ฒ์ ๋์์ ๋ ์ด๋ฆ. ํ์ฌ๋ TLS๋ผ๊ณ ๋ถ๋ฆผ
- SSL3.0 ์ด TLS1.0๊ณผ ๊ฐ์
- TLS 1.2๊ฐ 2008๋ ๋ฒ์ ์ด๊ณ TLS1.3์ด 2018๋ ์ ๋์ด
- ๋นจ๋ผ์ง๊ณ , ๋จ์ํ๋์๋ค.
- nginx๋ ๋ธ๋ผ์ฐ์ ์์๋ TLS1.3์ด ์ง์๋์ด์ผ ํ๋ค
RSA
RSA๋ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ง๊ณ ์์ด๋ ์๋์ ๊ฐ์ ์ ์ ์๋ ์์์ ์์ธ์๋ถํด์ ์ด๋ ค์์ ํตํด ๊ฐ๋ ฅํ ๋ณด์์ฑ์ ๊ฐ์ง๋ค. ์ด๊ฒ TLS์์ ์ด๋ป๊ฒ ์ฐ์ด๋๊ฑฐ์ง? ๋น๋ฐํค๊ฐ ์๋์ ๊ฐ์ด๊ณ ๊ณต๊ฐํค๊ฐ ๊ฒฐ๊ณผ๊ฐ์ธ๊ฐ?
๊ณต๊ฐํค, ๋์นญํค
- ๊ณต๊ฐํค๋ ๋น๋ฐํค๋ฅผ ๊ณต์ ํ์ง ์์๋ ๋๋ค๋ ์ ์์์ ์ฅ์ ์ด ์๋ค.
- ๋์ ๊ณต๊ฐํค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋๊ตฌ๋ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ค?
- ๊ณต๊ฐํค๋ก ์ํธํํ ๊ฒ์ ๋์นญํค๊ฐ ์์ผ๋ฉด ๋ณผ ์ ์๋ค.
- ๊ณต๊ฐํค ๋ฐฉ์๋ง์ผ๋ก๋ ์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ์์ ํ๊ฒ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์ ์๋ค.
- ๋์นญํค๊ฐ ํด๋ ์ ํด์ผํ๋๋ฐ, ์๋ฒ๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์ชฝ์ด๋๊น.
- ๊ณต๊ฐํค๋ก ์ํธํ ๋ ๊ฒ์ ๋ณตํธํ ํ ์ ์๋ค. ๊ทธ๋์ ๊ณต๊ฐํค ๋ฐฉ์์ ํ์ผ์ ์์ ์ ๋ณด์ฅํด์ฃผ์ง๋ ์๋๋ค. ํ์ง๋ง ๊ทธ ํ์ผ์ ์ ์์ ํ์ธํด์ค ์ ์๋ค.
TLS
public ๊ณผ private.
- private ๋ ๋ชฉ์ ์ง. ํ ๊ณณ์์๋ง ๊ฐ์ง๊ณ ์๋๋ค
- public ์ ์ ์์. ๋ชจ๋๊ฐ ์์ ๋กญ๊ฒ ๊ฐ๋๋ค
ci ์ด์ฉ ์๋ pushํ ๋ ssh permission์ ํ์ธํ๋ ค๋ ๋ชฉ์ ์ธ๊ฐ?
- ci ํด์์ ์๋ฒ๋ ci ์๋ฒ๊ฐ ๋๋ ๊ฒ์ธ๊ฐ? ํด๋ผ์ด์ธํธ๊ฐ ๋ด๊ฐ ๋๊ณ ?
- ci ํด์ด ์ ์์๊ณ , github ์ ์ฅ์๊ฐ ์๋ฒ๊ฐ ๋์ด์, ์๋ฒ์์ pubํค๋ฅผ ๊ฐ์ง๊ณ ์ ์์๊ฐ private key๋ฅผ ๊ฐ์ง๋ค
- ์๋ฒ๊ฐ ์ ์์๊ณ , ๋๋ ๋ชฉ์ ์ง
- ํด๋ผ์ฐ๋ ์๋น์ค์์๋ ๋
ธํธ๋ถ์์ ์์ฑํ ssh ๋ฅผ cloud instance์ ๋๊ธฐ๊ณ ๋ด๊ฐ ๋ค์ public์ด ๋์ด์ ์ ๊ทผํ๋ ๊ฒ์ธ๊ฐ?
- ec2์์ pemํค๋ฅผ ๋ฐ๋ ๊ฒ์ ec2๊ฐ ๋ชฉ์ ์ง๊ณ ๋ด๊ฐ ์ ์์
- private๋ ๋ฏธ๋ฆฌ aws์ ์ฌ๋ ค๋๊ณ ๊ทธ๊ฒ์ ๊ฐ์ ธ๋ค ์ฐ๋๋ก ํ๋ฉด ์ข๊ฒ ๋ค
- aws ์์๋ pubํค๋ฅผ ์๋ฒ์ ๋ณด๋ด๊ณ , ๋น๋ฐํค๋ ๋ ธํธ๋ถ์ ๋๋ค
- ํฌ๋งท์ ๋๋นํด์ ssh key๋ฅผ ํ์ผ๋ก ๊ฐ๊ณ ์์ผ๋ ค๊ณ ํ๋๋ฐ private key๋ฅผ ๊ฐ๊ณ ์์ด๋ ๋๋?
- ๊ณต๊ฐํค๋ฅผ ์๋ฒ์ ๋ฑ๋กํด์ ํด๋ผ์ด์ธํธ๊ฐ ๋น๋ฐํค๋ฅผ ๊ฐ์ง๊ณ ์๋๋ค?
- authorized_keys์ ๊ณต๊ฐ ํค๋ฅผ ๋ณต์ฌํด ๋ฃ์ผ๋ฉด, ์ ์ํ๋ ๊ณณ์์ ๋น๋ฐํค๋ฅผ ๋ฌผ์ด๋ณธ๋ค
- .pem ํ์ผ์ ๋ญ์ง = ํํ๋ง ๋ค๋ฅธ private key์ ๊ฐ์ ์ฉ๋
- 2025-Archive#๋ด๊ฐ ์คํดํ SSH key
GPG - ๊ฐ์ธ์ฉ ๋ฉ์์ง๋ฅผ ์ํธํํ๋ ค๊ณ ํ ๋ ์ด๋ค
-
๋ด ๊ณต๊ฐํค๋ ๋ง๊ตฌ ๋ฟ๋ฆฐ๋ค
-
๊ทธ๋ฌ๋ฉด ๋ด ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด ๋ง๋ ๋ฐ์ดํฐ๋ ๋ด ๋น๋ฐํค๋ก๋ง ์ด ์ ์๋ค.
-
๋ด ๊ณต๊ฐํค๋ฅผ ๊ฐ๊ณ ์๋ค๊ณ ๋ด ์ ๋ณด์ ์ ๊ทผํ ์๋ ์๋? ์์ ์ฉ์ธ๊ฐ?
-
์ฃผ์ธ์ฅ์ ์ฌ์ดํธ์ ๊ณต๊ฐํค๊ฐ ์ฌ๋ ค์ ธ ์์ด๋ ๊ทธ๊ฒ์ด ์กฐ์๋ ๊ฒ์ผ ์๋ ์๋ค. ๊ทธ๋์ CA ์ ์ฒด์์ ์ด๋ฅผ ๊ฒ์ฆํ๋ค.
-
SSH์์ pubํค๋ gpgํค์ฒ๋ผ ๋ง๊ตฌ ๊ณต์ ํด๋ ๋๋๊ฒ ์๋์ง ์๋? pubํค๋ง ์์ผ๋ฉด ์๋ฒ์ ๋ง์๋๋ก ์ ์ํ ์ ์๋๋ฐ
- pubํค๊ฐ ์๋ฒ๊ฐ ๊ฐ๋ ํค๊ณ , ํด๋ผ์ด์ธํธ๋ private key๋ฅผ ๊ฐ๋๋ค.
- ๊ทธ๋์ pubํค๊ฐ ๋ง์ด ํผ์ง๋ฉด ํด๋ผ์ด์ธํธ๋ ๋ง์ ๊ณณ์ ๊ฐ ์ ์๋ค.
๋น๋ฐํค๋ ์ด์ฐจํผ ํค๋ฅผ ์ง์ผ์ผํ๋ค๋ ๊ฒ์ ํ๋์ ๋น๋ฐํค๋ฅผ ๊ณต์ ํ๊ณ ๊ทธ๊ฒ์ ์งํค๋ ๊ฒ๊ณผ ๋๊ฐ๋ค. ๊ทผ๋ฐ ๋น๋ฐํค๋ฅผ ๊ณต์ ํ ์ ์ด ์๋ ์๋์ ์ฐจ์ด๋ก ๋ณด์์ฑ์ ์ฐจ์ด๊ฐ ์๋ค.
- HTTPS๋ ๊ณต๊ฐํค ๋ฐฉ์์ฒ๋ผ ์ํธํ๋ฅผ ๊ฐ์ธํค๋ก ํ๋ฉด ๋น๋ฐํค๋ก ๋ณตํธํ๋ฅผ ํด์ผํ๋ ๋ฐฉ์์ธ๊ฐ?
- ๊ณต๊ฐํค๋ ๋๊ตฌ๋ ๊ฐ์ง ์ ์๋ค. ๋น๋ฐํค๋ก ์ํธํ ํ ๊ฒ์ ๊ณต๊ฐํค๋ก ๋๊ตฌ๋ ์ด ์ ์๋ค๋ฉด ๋ด์ฉ์ด ์ง์ผ์ง์ง๋ ์์ ๊ฒ ๊ฐ๋ค.
- ๊ทธ๋์ End-2-End ์ํธํ๋ ์ ๊ฒฝ ์จ์ผ ํ๋ค.
- HTTPS์์ ์ธ์ฆ์๋ก ์ ์์ ํ์ธํ๊ณ , ๊ทธ ํต์ ์์ ํ์ธํ ๋๋ค๊ฐ์ผ๋ก ๋ค์ ํค๋ฅผ ๋ง๋ค์ด์ ๊ทธ ํค๋ก ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ฒ์ ์ ์ํ ๋ ๋ณด๋ด์ค ๊ณต๊ฐํค๋ก ๋๋คํค๋ฅผ ์ํธํํด์ ์๋ฒ์ ์ฃผ๊ณ , ๊ทธ ํค๋ก ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ค. ์ฆ, ์ฒ์ ๋ง๋ค์๋ ์ธ์ฆ์๋ ์ ์ํ์ธ์ฉ์ด๋ค.
- ์ ์ ํ์ธ์ ์ 3์๊ฐ ํ๋ค. (CA ์ ์ฒด)
- ์ฆ, HTTPS๋ ๊ณต๊ฐํค ๋ฐฉ์๊ณผ ๋์นญํค(์ํธ) ๋ฐฉ์์ ๋ชจ๋ ์ด๋ค.
- https://bravenamme.github.io/2019/12/03/https-2/
- ๋น๋ฐํค๋ฅผ ์๋ฒ๊ฐ ๊ฐ๊ณ , ๊ณต๊ฐํค๋ ์๋ฌด๋ ๊ฐ๋๋ค. ๊ทผ๋ฐ CI์์ ๋น๋ฐํค๋ฅผ ๊ฐ์ง๋ ๊ฒ์ ์ด๋ป๊ฒ ์๊ฐํด์ผํ์ง? ๋ธ๋ผ์ฐ์ ์์๋ ์๋ฒ๊ฐ ๋น๋ฐํค๋ฅผ ๊ฐ๋๋ค.
- ci ์๋ฒ๊ฐ ๋น๋ฐํค๋ฅผ ๊ฐ๋ ๊ฒฝ์ฐ๋?
- ๋น๋ฐํค๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ๋๋ค. CI secret์ ๋น๋ฐํค๋ฅผ ์
๋ ฅํ๋ฉด builder์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค. pubํค๋ ์ด๋ป๊ฒ ๋ฑ๋กํ๋๋ผ? ๋ค์ ๋์์ ๋ด์ผ๊ฒ ๋ค.
- pubํค๋ฅผ deploy key์ ๋ฃ๊ณ private key๋ฅผ secret์ ๋ฃ์๋ค. github๋ ์ด๋ ๊ฒ ๋๋? ๋๋ค
HTTPS
- ์๋ฒ๊ฐ ์์ ์์ ์ฆ๋ช
ํด์ผ ํ๋ ์ด์ ๋?
- ํด๋ผ์ด์ธํธ๋ ์ด์ฐจํผ ๋ถ๋ํ ์ฌ์ดํธ์ ๋ค์ด๊ฐ๋ ์์ ์ด ์ ์์ ์ผ๋ก ๋ ํ ๋ฐ.
- ์ค๊ฐ์ ๊ธธ์ ๊บพ์ด์ ์์ ์๊ฒ ๊ฒฐ์ ํ๊ฒ ํ๋ ๊ฒ์ ๋ง์ ์ ์๊ฒ ๋ค.
- ์ค๊ฐ์ ๋ฐ์ดํฐ ํ์ทจ๋ฅผ ๋ชปํ๊ฒ ํ๋ ์ญํ ์ด ์ฃผ ์ญํ ์ธ๊ฐ?
- ์ค๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๊ฑฐ๋ ์ด์ํ ๋ฐ๋ก ์์ฒญํ๋ ๊ฑธ ๋ง๊ณ (cors)
- ๋ด๊ฐ ๋ค์ด์จ ์ฌ์ดํธ๊ฐ ๋ด๊ฐ ๋ค์ด๊ฐ๋ คํ๋ ๊ทธ ์๋ฒ๊ฐ ๋ง๋์ง ์ธ์ ๋ฐ๊ธฐ ์ํด
- HTTPS๋ ๊ตญ๊ฐ์์ ๋ง๊ธฐ ํ๋ ์ด์ ๋?
OAuth
๋ธ๋ผ์ฐ์ , ์ฌ์ฉ์, ์๋ฒ, Oauth ์ ๊ณต์
์๋ฒ๋ ๋ธ๋ผ์ฐ์ ์ Oauth๋ฅผ ํ์ํ๋ค ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ์ Oauth ๋ฒํผ์ ๋๋ฅธ๋ค ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฃผ๋ฉด์ ์ ํธ๋ฅผ ์ค๋ค ์๋ฒ๋ Oauth ์ ๊ณต์์๊ฒ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ค๋ค Oauth ์ ๊ณต์๋ ์ฌ์ฉ์์๊ฒ ์ฝ๋๋ฅผ ๋ณด๋ธ๋ค ์ฌ์ฉ์๋ ์๋ฒ์ ์ฝ๋๋ฅผ ๋ณด๋ธ๋ค ์๋ฒ๋ Oauth ์ ๊ณต์์๊ฒ ์ฝ๋์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค Oauth ์ ๊ณต์๋ ํ์ธ ํ ์๋ฒ์ ํ ํฐ์ ์ค๋ค
์ฌ์ฉ์ -> ์๋ฒ -> Oauth (์ฌ์ฉ์ ์ ๋ณด) ์ฌ์ฉ์ <--------- Oauth (์ฝ๋) ์ฌ์ฉ์ -> ์๋ฒ -> Oauth (์ฌ์ฉ์ ์ ๋ณด + ์ฝ๋) ์๋ฒ <- Oauth (์ธ์ฆ ํ ํ ํฐ ์ ๊ณต)
์๋ฒ๊ฐ ๋ฐ๋์ด๋ ์ฌ์ฉ์๋ ์์ ์ด ์๋ ํ๋ ์ผ์ ๊ทธ๋๋ก ํ ์ ์๋?
oauth2.0
- ๋ก๊ทธ์ธ
- ํ ํฐ ํ๋
- ํ ํฐ ๋ฐ ์์ด๋๋ก ๋ด๋ถ ์ ์ฅ
- ํ ํฐ์ ์ฌ์ฉ์ ํค๋์ ๊ฐ๋๋ก ํ๊ธฐ
ํ ํฐ ํ์ธ ์ฌ์ฉ์ ํ์ธ ์์ฒญ ๋์ ์คํ
user ์ธ์ ๊ด๋ฆฌ
ํ๋์ ์๋ฒ๋ฅผ ์ค์ผ์ผ ์์ํด์ ์ฌ๋ฌ ๋๋ก ๋ง๋ค์ด๋์ผ๋ฉด ์ ์ ์ ๋ณด๊ฐ ์ด๋ ๊ณณ์๋ ์๊ณ , ์ด๋์๋ ์๋ ์ํฉ์ด ๋ฒ์ด์ง๋ค. ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ๋ช๊ฐ ์๋๋ฐ.
sticky
- ์ ์ ๊ฐ ์ฒ์ ์ ์ํ ์๋ฒ์ ๊ณ์ ์ ์ํ๋๋ก ์ ์งํ๋ ๋ฐฉ๋ฒ.
- ์๋ฒ ๊ณผ๋ถํ๊ฐ ์ผ์ด๋ ์ ์๋ค.
- ์๋ฒ๊ฐ ๋ป์ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์๊ธฐ ๋๋ฌธ์ ๋จ์ผ ์คํจ์ง์ ์ด ๋๋ค.
clustering
- ๊ฐ ์๋ฒ๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ ๋๊ธฐํํ๋ ๋ฐฉ์
- ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ํ๋๋ฐ ์์์ด ๋ง์ด ์๋น๋ ์ ์๋ค.
๋ฐ๋ก ์ธ์ ์๋ฒ๋ฅผ ๋๋ ๋ฐฉ์
- ์ ์ ์ ์ธ์ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ ๊ฒ์ฆํ๋ ๋ฐฉ์
- ๊ด๋ฆฌ ์ง์ ์ด ์ฆ๊ฐํ๋ค.
- OAuth๊ฐ ์ด๋ฅผ ๋์ ํด์ค๋ค.
- ๋์ ์ ์ ์ ๋ณด๋ฅผ ๋ฐ๋ก ๊ด๋ฆฌํด์ ์ด์ฉํ ์ ์์ด์ผ ํ๋ค. ์๋น์ค ๊ฐ์ ์ ์ํด.
https://chagokx2.tistory.com/93
reference
Micro Service Architecture
MSA ๋ ์์ ๊ท๋ชจ์์๋ ๊ณผํ ๋๋์ด ์๋ค ๋ชจ๋๋ฆฌ์ค๋ก ์ฝ๊ฒ ๊ด๋ฆฌ๊ฐ ๋ ๊ฒ์ MSA๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด๋ฆฌํฌ์ธํธ๊ฐ ์์ฒญ ๋ง์์ง๋ค
- every node make end-point, http, grpc
- need documentation
- flexible micro service. it can be split and compose
- logging and visualization
- ๋ง์ดํฌ๋ก์๋น์ค์์ ๋ฌธ์ ๊ฐ ์๊ธด ์ง์ ์ ๋ฐ๋ก ํ์ธํ ๋ฐฉ๋ฒ์?
๋ง์ดํฌ๋ก ์๋น์ค
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋ฏ์ด ๋ค๋ฅธ ์๋น์ค๋ค์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ ์์ ์ํด๊ฐ ์๋ค ๋ง์ดํฌ๋ก์ํคํ ์ฒ๋ ๊ด๋ฆฌํ ์ง์ ์ด ๋์ด๋๋ ๋จ์ ์ด ์์ง ์๋
-
๋ฉ์์ง ๊ธฐ๋ฐ์ ๋น๋๊ธฐ ํต์
-
์ฌ๊ฐ ํจํด - ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง๋ฅผ ์ํด
-
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ
-
์ด๋ฒคํธ ์์ฑ ํจํด
-
API
-
์๋น์ค ๋ฉ์
-
์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ
-
๋ฉ์์ง ์ฒ๋ฆฌ
-
์ํท ๋ธ๋ ์ด์ปค
-
API gateway, ์๋น์ค ๋ฉ์, ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ์ฐจ์ด๋?
- ์๋น์ค ๋ฉ์ ์์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๊ฐ ๋ณดํต ๋ด์ฅ๋์๋ค
- api gateway๋ ์ธ๋ถ์์์ ์ ์, ์๋น์ค ๋ฉ์๋ ๋ด๋ถ์ ๋คํธ์ํฌ ๊ด๋ฆฌ
์ ๋ง์ดํฌ๋ก ์๋น์ค์ธ๊ฐ
-
๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ํด์๋ ํ์ฐ์ ์ผ๋ก ์๋น์ค ๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ด ํ์ํ๊ณ , ๋น๋๊ธฐ ํต์ ๊ณผ ๋๊ธฐ ํต์ ์ ์ ๊ตฌ๋ถํด์ ์ฌ์ฉํด์ผ ํ๋ค.
- ๋๊ธฐ๋ API๋ฅผ ์ด์ฉํด์, ๋น๋๊ธฐ๋ ๋ฉ์์ง ํ๋ฅผ ์ด์ฉํด์.
- ๊ฐ ์๋น์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์์ง ํ์ ๋ฐํํ๊ณ ๊ตฌ๋ ํ๋ ์์ผ๋ก ๋ฐ์ดํฐ ๊ณต์ , ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
-
๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ผ์ผ์ด ๊ด๋ฆฌํ๊ธฐ ๋ณด๋ค ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์์ ๋กญ๊ฒ ์์ฑ๊ณผ ์ด์์ด ๋๊ฒ ํด์ผ๊ฒ ๋ค
-
๋จ์ผ๊ณ ์ฅ์ ์ด ์๋๋ก ๋ ธ๋๋ฅผ ์ฌ๋ฌ ๊ฐ ๋์ด ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
-
ํฐ ํ์ ์์ ํ์ผ๋ก ๋๋๋ฉด ํ ๊ฐ ๋ํ์ ์ฅ๋ฒฝ์ด ์๊ธฐ๊ณ , ์๊ฐ๊ฐ ์๊ธด๋ค. ๋ค๋ฅธ ํ์ ์์ญ์๋ ์๋ค์ด๊ฐ๋ ค๊ณ ํ๊ณ , ๊ทธ ์ชฝ์์ ์ผ์ด๋ ์ผ์ด ์ ๋ฌ์ด ์๋ ๋๊ฐ ๋ง์์ง๋ค. ์ด๋ป๊ฒ ์ด ์ฅ๋ฒฝ์ ์์จ ์ ์์๊น
-
ํต๊ฐ์กฑ์ ์ด์ด 1์ธ๊ฐ๊ตฌ๊ฐ ๋์ด๋จ์ ๋ฐ๋ผ ๋๊ฐ์กฑ์ผ ๋๋ ์์ฐ์ค๋ฝ๊ฒ ์ ์ ์๋ ๊ฒ๋ค์ด ์ด์ ๋ ๊ณต๋ถ๋ฅผ ํด์ผ ์ ์ ์๊ฒ ๋์๋ค.
-
์ํ์ ์ธ ์ฐ๊ฒฐ๋ง์ด ๋ง๋ค์ด์ ธ์ ์ ๋ณด๊ณต์ ๋ฅผ ํ ์ ์๊ฒ ํด์ผํ๋ค. ํ์ฌ์์ ํ์ฅ์ด ์๊ณ ํ์ฅํ์๋ฅผ ํ๋ ๊ฒ๊ณผ ๋น์ทํ ๋๋์ด์ง๋ง ์ํ์ ์ธ ๊ด๊ณ์ ์ฐ๊ฒฐ๋ง์ผ๋ก. (ํ์ฌ์ ์ปค๋ฎค๋ํฐ๊ฐ ์ด ์ญํ ์ ํ๊ณ ์๋ ๊ฒ์ผ๊น? Web 2.0)
-
์ด์ฐจํผ ํ ์ฌ๋์ด ๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค? ๊ทธ๋์ ๋ชจ๋๋ฆฌ์ค์์ ์๋ก ์ฎ์ฌ์๋ ๊ฒ์ ๋ง์ดํฌ๋กํํด์ ํธํ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํ๋๊ฑฐ์ง ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ฌดํ์ ๋ง์ด ๋ง๋๋ ๊ฒ์ด ๋ชฉ์ ์ ์๋ ๊ฒ์ด๋ค. ํ ์ฌ๋์ด ๋ค๋ฃจ๋ ์๋น์ค๋ฅผ ์ ํ ํด์ฃผ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
๋ง์ดํฌ๋ก์๋น์ค
์ ๊ทผ ํฌ์ธํธ
- ๋จ์ผ ๊ณ ์ฅ ์ง์ ์ ์์ค๋ค
- ์์กด ์์ญ์ ๋ถ๋ฆฌํ๋ค
- ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ์ฌ์ด์ฆ๋ฅผ ์ ์งํ๋ค
์ด๋ฅผ ์ด๋ ต๊ฒ ํ๋ ์์
- API endpoint๊ฐ ๋ง์์ ธ์ ์ด๋ฅผ ์ผ์ผ์ด ๊ด๋ฆฌํ๊ธฐ ํ๋ค์ด API Gateway๋ผ๋ ๊ฒ์ ์ด์ฉํ๋ ค ํ๋๋ฐ ์ด API gateway๊ฐ ๋จ์ผ ๊ณ ์ฅ์ ์ด ๋๋ฒ๋ฆฐ๋ค
- ํฉ์ด์ ธ ์๋ ๋ฐ์ดํฐ ์ฌ๋ฌ๊ฐ๋ฅผ ํฉ์ณ์ ์ฌ์ฉํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๋ค
- ์ฒ์์๋ ์์ ์ฌ์ด์ฆ์ง๋ง ์๊ตฌ์ฌํญ์ด ๋์ด๋จ์ ๋ฐ๋ผ ์ฌ์ด์ฆ๋ ํ์ฐ์ ์ผ๋ก ์ปค์ง๋ค.
์ด์ ๋ํ ๋ง์ดํฌ๋ก์๋น์ค์ ๋์๋ฐฉ๋ฒ
- sidecar ํจํด์ผ๋ก API gateway๋ฅผ ์์ ๊ณ ๊ฐ ์๋น์ค์ ์ฐ๊ฒฐ์ ์ ๋ถ์ธ๋ค
- SAGA, CQRS
- ์ฌ์ด์ฆ๊ฐ ์ปค์ง๋ฉด ๋ค์ ๋ถ๋ฆฌํ๋ค.
- ๋ฏธ์ดํฌ๋ก์๋น์ค๊ฐ ๋ฐ์ดํฐ ํตํฉ๊ณผ ์์ ์ผ๊ด์ฑ ์ ์ง๋ฅผ ์ํด ๋ค๋ฅธ ์๋น์ค๊ฐ ํ์ํ๋ฐ ์ด๋ฅผ ์ปค๋ฐ๊ณผ ์ ์ฉ์ผ๋ก ๋๋๋ ๋ฐฉ์์ผ๋ก ํ ์ ์๊ณ ์ฌ๊ฐ ํจํด์ ์ด์ฉํด ํด๊ฒฐํ ์๋ ์๋ค
๊ถ๊ธ
- ์ฟ ๋ฒ๋คํฐ์ค์ ๊ตฌ์กฐ์ฒ๋ผ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌํํ๋ฉด ๋์ง ์์๊น
- ๋ฐ์ดํฐ๋ฅผ ๋ค ๋ถ๋ฆฌํด๋๊ณ ์ค์์ ๋ชจ์์ ์ฒ๋ฆฌํ๋ค๊ฐ ์์ฒญ์ด ์์ฃผ ์ค๊ฐ๋ค ์ถ์ผ๋ฉด ์ฐ๊ฒฐํ๋ ๊ธธ์ ์ถ๊ฐ?
ํ ๋ง์ดํฌ๋ก์๋น์ค์ ๋จ์๋ฅผ ๋ก์ง - ๋ฐ์ดํฐ๋ฒ ์ด์ค - ์ฌ์ด๋์นด๋ก ๋๊ณ ์ฌ์ฉ ์ด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ด๋ฆฌํ๋ ํด์ ์๊ฐํด๋ณธ๋ค
์ค์์ ๋ฐ์ดํฐ๋ค์ด ํ๋๋ก ๋ฌถ์ธ๋ค ํ ๋ง์ดํฌ๋ก์๋น์ค์ ์์ฒญ์ด ์ค๋ฉด ๊ทธ ์๋ต์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค ๋ฉ์์ง๋ ์ค์, ๊ด๋ฆฌ์์๊ฒ ์ ๋ฌ๋๊ณ , ๊ด๋ฆฌ์๋ ํผ๋๋ฐฑ์ผ๋ก ์ค์์๋ ์ ๋ฐ์ดํธ๋ก ์ด์ฉ๋๋ค
kubernetes๋ก ์ฌ๋ฌ๊ฐ์ ์๋น์ค๋ก ์ชผ๊ฐ๋ฉด microservice์ธ๊ฐ? micro๋ก ์๋น์ค๋ฅผ ๋ง๋ค๋ฉด microservice์ธ๊ฐ? monolith์ ๊ตฌ๋ถ๋๋ microservice์ ํน์ง์ ๊ฐ ์๋น์ค๊ฐ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ๋ ๊ฒ์ธ๋ฐ, micro๋ ์ด๋ค ๊ตฌ์ฑ ๋ฐฉ์์ธ๊ฐ
์ ์ ์ ๋ณด ์ ์งํด์ ๊ณ์ ๋ถ๋ฌ์ค๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์?
๋ชจ๋๋ฆฌ์ค์์ ํจ์ํธ์ถ์ ์ด๋ฒคํธ ๋๋ฆฌ๋ธ์ด ๋์ฒดํ์ ๋ ๊ณ ์์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฐ? ๋ฐฐ๋ฏผ์ ๋๊ธด ํ๋๋ณด๋ค
- ๊ฐ์ ๋คํธ์ํฌ์ ์๋ค๋ฉด rpc๋ก ์๋น์ค๊ฐ ๋๋ ์ ธ ์์ผ๋ฉด rpc๋ก ๋ฐ์ดํฐ๋ฅผ ์ทจํฉํด api gateway๊ฐ ๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค
์ฟ ๋ฒ๋คํฐ์ค์์๋ RBAC๊ฐ ์ด๋ ์๊ฐ์ ๋์ํ๋๊ฑฐ์ง?
๋ง์ดํฌ๋ก์๋น์ค์ library๋ฅผ ํ๊ณณ์ ๋ชจ์์ ๋ณด์ฌ์ฃผ๊ณ ์ฝ๊ฒ ํธ์ถํด ์ธ ์ ์๋๋ก ํด์ผํ๋ค. ์ด๋ป๊ฒ?
๋ง์ดํฌ๋ก์๋น์ค
๋ง์ดํฌ๋ก์๋น์ค๋ ๋ด ์ํ๋ฐฉ์๊ณผ ๋ค๋ฅด๋ค ๋ง์ดํฌ๋ก์๋น์คํ๋ ๋ฌดํ์ ๋ง์ด ํ ๊ฒ ์๋๋ผ ํ์ถ์ง์ ์ ๋ง๋๋๊ฒ ์ข๊ฒ ๋ค. ํ ํ์ด ๊ฐ๋นํ ์๋น์ค๋ฅผ ์๊ฐํด์
๋ถ์ฐ ๋ฐ์ดํฐ ๋ถ์ฐ ์๋น์ค ๋ถ์ฐ ํ๊ฒฝ์ ์ปจํธ๋กคํ๋ ๊ฒ ํ์ํ๋ค
๋ณต์ก์ฑ๋ ๋ถ์ฐ ํ๊ฒฝ์์ ์๊ณ ๋ถ์ฐ์ด ๊ณง ๊ฐ๋ณ์ ์ธ ์ธ๊ฐ ์ธ์๊ณผ ๋ฎ์ ์ํํธ์จ์ด์ ๊ตฌ์กฐ
๋ง์ดํฌ๋ก์๋น์ค์ ๊ฒฝ๊ณ์ค์ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ ํธ๋์ญ์ ๋ฐ์ดํฐ ๋ชจ์์ ์ฒ๋ฆฌํ๊ธฐ
๋ง์ดํฌ๋ก์๋น์ค๋ ๋ฐ์ดํฐ๊ฐ ๋ฟ๋ฟ์ด ํฉ์ด์ ธ์๋ค๊ณ ๋๋ ์ ์๋ค ์ ๊ฒฝ์จ์ผํ ์์๊ฐ ๋ง์์ง๋ค๊ณ ๋ณผ ์ ์๋ค ๋ทํ๋ฆญ์ค๋ ์ด๊ฒ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ์ง?
๋ชจ๋๋ฆฌ์ค๋ก ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ๊ธฐ์กด์ ๊ฒ์ ๊ณ์ ์ถ๊ฐํด์ผํ๊ณ ์์ ํด์ผํ๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ด ํ์ํ๋ฉด ๊ธฐ์กด ๊ตฌ์กฐ๋ฅผ ๊ฑด๋๋ ค์ผ ํ ์๋ ์๋ค ์ด๊ฒ์ ๋ง๊ธฐ ์ํด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ฐ์ง๋ง ๊ด๋ฆฌํฌ์ธํธ๋ ์ค์ผ ์ ์์ด์ผ ํ๋ค.
์๋น์ค๋ฉ์
๊ท์น๊ธฐ๋ฐ์ ๋ถํ๋ถ์ฐ์ผ๋ก ๋ฐฐํฌ(ํ ์คํธ์ ๋ฐฐํฌ)์ ๋ฆด๋ฆฌ์ฆ(ํ๋ก๋์ ์ ๋ฐฐํฌ)๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ข๋ค๊ณ ํ๋ค
ํ ๋ ๋ฉํธ๋ฆฌ ๊ด๋ฆฌ
- ๋คํธ์ํฌ ํธ๋ํฝ ๊ด๋ จ ์งํ ์์ง ๋ฐ ์ถ์
CQRS
- ์ฟผ๋ฆฌ์ ์ปค๋งจ๋๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ์ฟผ๋ฆฌ๋ CRUD์ Read์ ๊ฐ๋ ์ด๊ณ
- ์ปค๋งจ๋๋ ๋๋จธ์ง CUD์ ๊ฐ๋ ์ด๋ค.
- Read๋ฅผ ์กฐํฉํด์ ๋๋จธ์ง ๋ช ๋ น์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ , Read ์์ ์ด ๋ค๋ฅธ ์์ ๊ณผ ์ฌ์ฉ๋๋ ๋น๋์๋ ์ฐจ์ด๊ฐ ์๊ธฐ๋ ํ๋ค.
- ๋ง์ดํฌ๋ก ์๋น์ค์์ ํนํ ๋ค๋ฅธ DB์์ ๊ฐ์ ธ์ฌ ๋ ์กฐํฉํ๊ธฐ ์ํด ์ด๋ ๊ฒ ๋ถ๋ฆฌํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค
- ์ด ๊ฐ๋ ์์๋ ์ ์ด์ ๋ชจ๋ธ, ์๋น์ค ์์ฒด์์ ์ฟผ๋ฆฌ์ ์ปค๋งจ๋๋ฅผ ๋ถ๋ฆฌํด์ ๋ค๋ฅธ ์๋น์ค๋ก ๋ง๋ค๋ผ๊ณ ํ๋ค
๊ตฌ์ฑ์์
- ์ฌ๊ฐ
- ์ ๊ทธ๋ฆฌ๊ฑฐํธ
- ์ฟผ๋ฆฌ
- api
event driven architecture
- in micro service, each service need send some event.
- if not implement event, can parse some data?
- http server <- event producer -> queue DB lambda
- lambda can assign http or sqs. how to get data?
microservice experience
- ๋ฐฐ๋ฏผ
- ๊ฒฐ์ ์ฅ์ ์ ๊ฒฐ์ ๋ง ์ฅ์ ๋๋ ํ๊ฒฝ์ ์ํ๋ค.
- ๋ชจ๋๋ฆฌ์ค ์๋ฒ ํ ์ด๋ธ์ด 700๊ฐ... >> ๋ถ๋ฆฌ ํ์๋ ํ ์๋น์ค์ ํ ์ด๋ธ์ด ๋ง์ด ์์ ๊ฒ
- ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํจ์ฌ ํจ์จ์ด ์ฆ๊ฐํ๋ค.
- 11๋ฒ๊ฐ
- Spring cloud ์ด์ฉ
junk food
๋ทํ๋ฆญ์ค๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํ๋ฉด์ ๋๊ผ๋ ๊ฐ๋ฐ์ ์ฃผ์ ๋ฌธ์ ์
- dependency
- circuit breaker ๋ก ์์กด์ฑ ์๋ ์๋ฒ๊ฐ ์ฃฝ๋ ๊ฒ์ ๋์
- Scale
- EVCache
- Variance
- Change
architecture process organization
When many people come to site. how to keep working server
- allow maximum people, others redirect to queue.
- scale out
์์
์๋ฌ ์ฒดํฌ, ๋ก๊น , ํฌ์ค์ฒดํฌ, ํ๋ก ์ฐจ๋จ ๋ฑ ๋ง์ดํฌ๋ก์๋น์ค์ ํ์ํ ๊ฒ๋ค์ ๋ง๋ค์ด๋์ ๊ฒ์ ์ด์ฉํ์๋ ๋ง์ดํฌ๋ก์๋น์ค ์์๋ผ๋ ๊ฐ๋ ์ด ์ด๋ฏธ ์์๋ค go-kit, micro ์ฐธ๊ณ
- ์ธ๋ถํ(์๋ํฌ์ธํธ ์ ์ฉ)
- ํฌ์ค์ฒดํฌ
- ๋ชจ๋ํฐ๋ง ์งํ ๋ฝ๊ธฐ
- ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ
- ํ๋ก ์ฐจ๋จ
- ๋ถ์ฐ ์ถ์
- ๋ก๊น (์ก์ ๊ธฐ๋ก)
- ๋ณด์ ์ด ๊ธฐ๋ฅ๋ค์ ๋ฉ์ธ๋ก์ง์ ์ ์ ํ์์์ด ์์๋ฅผ ์ ์ฉ์ํค๋ฉด ์๋์ผ๋ก ๊ธฐ๋ฅ์ด ์ํ๋๋ค
๊ทธ๋ฆฌ๊ณ ์๋น์ค ๋ฉ์๋ ์์์ ์งํ ํํ๊ฐ ๋ ๊ฒ์ธ๋ฐ, ํ์ฌ๋ ์ผ๋ถ ๊ธฐ๋ฅ๋ง ๊ตฌํํ๊ณ ์๊ณ , ์์ง ์์ ๋์ฒด์ ๋ ์๋๋ค istio, linkerd
istio์์ ๋ถ์ฐ ์ถ์ ์ ํ๋ ค๋ฉด app: deployname ์ ๋ผ๋ฒจ๋ง ํด์ค์ผ ํ๋ค
๋ง์ดํฌ๋ก์๋น์ค์์ ๋ ์๋น์ค์์ ๋ถ๋ฌ์จ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ํฉ์น ๊น
๋ ์๋น์ค๋ฉด ๊ทธ๋ฅ ํธ์ถํ๋๋ฐ์ ๋ถ๋ฅด๋ฉด ๋๊ฒ ์ง๋ง rdbms์์ ํ๋ ์กฐ์ธ์ฒ๋ผ ์์ ์์ฌ๋ก ํ๊ธฐ์๋ ์ฑ๋ฅ์ด ์๋์จ๋ค
CQRS์ ์ฟผ๋ฆฌ๋ฅผ ์ด ์ํฉ์ ์ฐ๋๊ฐ ์๋๋ฉด ์ฟผ๋ฆฌ๋ฅผ ๋ชจ์์ rdbms๋ก ๋ชจ์ผ๋ ์ถ๊ฐ์ ์ธ ๋ฆฌ์์ค๋ฅผ ์ด์ฉํด์ ํด๊ฒฐ?