-
Notifications
You must be signed in to change notification settings - Fork 92
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #539 from Meet-Coder-Study/byungwoo
[#528] 무μ€λ¨ λ°°ν¬μ λ΅μ μ’ λ₯
- Loading branch information
Showing
2 changed files
with
93 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
# 무μ€λ¨ λ°°ν¬μ λ΅μ μ’ λ₯ | ||
|
||
## 무μ€λ¨ λ°°ν¬ | ||
|
||
λ°°ν¬λ "λΉλκ° μμ±λ μ€ν κ°λ₯ν νμΌμ μ¬μ©μκ° μ κ·Όν μ μλ νκ²½μ λ°°μΉμν€λ μΌ"μ΄λ€. | ||
|
||
MSA(Microservices Architecture)κ° λμ΄λλ©΄μ λ€μν λ°°ν¬μ λ΅μ΄ μ겨λκ³ μκ³ μ¬μ§μ΄ 무μ€λ¨ λ°°ν¬κ° νμ¬λ κ±°μ νμ€μΌλ‘ μ리μ‘κ³ μλ€. | ||
|
||
무μ€λ¨ λ°°ν¬λ μλ²λ₯Ό μ€μ λ‘ μλΉμ€ν λ μλΉμ€μ μ₯μ μ λ°°ν¬μ μμ΄μ λΆλ΄κ°μ μ΅μνν μ μκ²λ μλΉμ€κ° μ€λ¨λμ§ μκ³ λ μ½λλ₯Ό λ°°ν¬ν μ μλ κΈ°μ μ΄λ€. | ||
|
||
무μ€λ¨ λ°°ν¬μ λ°λλ μ€λ¨ λ°°ν¬μ΄λ€. κ°λ μ΄λ€ μΉμ¬μ΄νΈμ μ μνλ©΄ "μμ μ€μ΄λ μ¬μ΄νΈ μ΄μ©μ΄ λΆκ°νλ€"λ μλ΄μ°½μ λ³Έ μ μ΄ μμ κ²μ΄λ€. μ₯μ μν©μΌ μλ μκ² μ§λ§ λ°°ν¬μ κ΄μ μμ 보면 ν΄λΉ μΉμ¬μ΄νΈμλ μ€λ¨ λ°°ν¬κ° μΌμ΄λλ€κ³ λ³Ό μ μλ€. | ||
|
||
κ³Όκ±°μλ λ°°ν¬λ₯Ό νκΈ° μν΄μ λ΄λΉμλ€μ΄ μλΉμ€ μ μ μ΄ μ μ μΌκ°μ΄λ μλ²½ μκ° λμ μμ μ νμμ§λ§ νμ¬μλ μΌλ°μ μΈ μ 무μκ° λ΄μ λ°°ν¬μ ν¨κ» νμμ λ‘€λ°±μ νλ λ°©μμΌλ‘ λ³νκ³ μλ€. | ||
|
||
μννΈμ¨μ΄ λΆμΌλ₯Ό μ μΈνλλΌλ 무μ€λ¨ λ°°ν¬λ μ°λ¦¬μ μΌμμνμ κΉμν μ€λ©°λ€μ΄ μλ€. | ||
|
||
![road-construction.jpg](images/road-construction.jpg) | ||
|
||
μμ μ¬μ§μ λλ‘κ³΅μ¬ νμ₯μ΄λ€. λλ‘κ³΅μ¬ νμ₯μμ μΌλΆ μ°¨μ λ§μ κ°λ°©νκ±°λ μ°νλ‘λ₯Ό μλ΄νλ λ°©μμ 무μ€λ¨ λ°°ν¬λ₯Ό νλ κ²κ³Ό μ μ¬νλ€κ³ λ³Ό μ μλ€. | ||
|
||
λ€μ λ§ν΄μ μνν κ΅ν΅νλ¦μ μν΄μλ λλ‘μλ νμ μΌμ ν ν΅νμ΄ λ³΄μ₯λμ΄μΌ νκΈ° λλ¬Έμ λΆκ°νΌν κ²½μ°κ° μλλΌλ©΄ κ΅ν΅νλ¦μ λ°©ν΄νμ§ μκ³ μ΄λ κ² μΌλΆ μ°¨μ μ κ°λ°©νκ±°λ μ°νλ‘λ₯Ό μλ΄νλ "무μ€λ¨" λ°©μμ μμ μ΄ νμνλ€. λλΆμ΄ μ£Όκ°μ μμ ν κ²½μ° μμ μλ€μ΄ λ³΄λ€ "μμ ν" νκ²½μμ μμμΉ λͺ»ν μν©μ λμν μ μλ€. | ||
|
||
## μλ² μ΄μ€ν | ||
|
||
무μ€λ¨ λ°°ν¬λ λ°λμ "μλ² μ΄μ€ν" μνμμ μνν μ μλ€. | ||
|
||
μλ² μ΄μ€νλ λ€μκ³Ό κ°μ΄ λ‘λλ°Έλ°μλ₯Ό μμ λκ³ ν λ μ΄μμ λμΌν μλ²κ° νΈλν½μ λΆμ°νλ κ²μ λ§νλ€. | ||
![server-duplicate.png](https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2332684E583157AD06) | ||
|
||
μλ² μ΄μ€νλ λ€μμ λ κ°μ§ ν° λͺ©μ μ κ°μ§κ³ μλ€. | ||
|
||
첫 λ²μ§Έλ Failover(μμ€ν λ체 μλ)μ΄λ©° λ λ²μ§Έλ Load Balance(λΆνκ· λ±)μ΄λ€. | ||
|
||
Failoverλ νμ μ¬μ©νλ μλ²μ λμΌν μλ²λ₯Ό ꡬμΆνμ¬ νλμ μλ²κ° μ₯μ λ‘ μ¬μ©μ΄ μ΄λ ΅κ² λ κ²½μ° λ체 μλ²λ₯Ό νμ©νμ¬ μ€λ¨μμ΄ μλΉμ€λ₯Ό μ 곡 ν μ μκ² νλ κ²μ΄λ€. | ||
|
||
LoadBalanceλ λ‘λλ°Έλ°μλ₯Ό ν΅ν΄μ νλμ μλ²μ κ°ν΄μ§λ λΆνλ₯Ό λΆμ°μμΌμ ν μλ²μ λ무 λ§μ λΆνκ° κ±Έλ¦¬κ±°λ λ³λͺ©μ΄ κ±Έλ¦¬μ§ μλλ‘ νλ κ²μ΄λ€. | ||
|
||
## 무μ€λ¨ λ°°ν¬μ λ΅μ μ’ λ₯ | ||
### λ‘€λ§ μ λ°μ΄νΈ(Rolling Update) | ||
![rolling-updates.png](https://t1.daumcdn.net/cfile/tistory/99143F435C87397A09) | ||
|
||
λ‘€λ§ μ λ°μ΄νΈλ ꡬ λ²μ μμ μ λ²μ μΌλ‘ νλμ© μ λ°μ΄νΈ λ°©μμ λ§νλ€. μλ² μ 체μ κ°μλ₯Ό Nμ΄λΌκ³ ν λ ꡬ λ²μ κ³Ό μ λ²μ μ λΉμ¨μ N-K:Kμ΄λ©° N:0μμ μμνμ¬ 0:N λΉμ¨λ‘ κ°λ κ²μ λͺ©νλ‘ νλ€. λ°°ν¬λ₯Ό μν μΈνλΌ λ¦¬μμ€ νλ³΄κ° μ΄λ €μΈ κ²½μ° μ¬μ©νκΈ°μ μ ν©νλ€. | ||
|
||
- μ₯μ | ||
- λ°°ν¬λ₯Ό μν μΆκ°μ μΈ μΈνλΌ λ¦¬μμ€λ₯Ό μꡬνμ§ μλλ€. | ||
- λ¨μ | ||
- λ°°ν¬ μ€μλ μΈμ€ν΄μ€ μκ° κ°μλλ―λ‘ μλ² μ²λ¦¬ μ©λμ κ³ λ €ν΄μΌ νλ€. | ||
- ꡬ λ²μ κ³Ό μ λ²μ μ΄ κ³΅μ‘΄νλ μκΈ°κ° μμΌλ―λ‘ κ΅¬ λ²μ μ λͺ¨λ κ³ λ €νμ¬ κ°λ°ν΄μΌ νλ€. μλ₯Ό λ€μ΄ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§μ ν° λ³νλ₯Ό μ£ΌκΈ° μ΄λ ΅λ€. | ||
- μΈμ μ μ¬μ©ν κ²½μ° κΈ°μ‘΄ μλ²μ μ μνκ³ μλ μ¬μ©μμ μΈμ μ λν κ³ λ €κ° νμνλ€. | ||
|
||
|
||
### λΈλ£¨/κ·Έλ¦°(Blue/Green) | ||
![blue-green.png](https://t1.daumcdn.net/cfile/tistory/99A68F4E5C8739470D) | ||
|
||
ꡬ λ²μ κ³Ό μ λ²μ μ λμμ λ°°ν¬ν μνμμ λ‘λλ°Έλ°μμμ νΈλν½μ "μΌμ ν" μ λ²μ μ λ°λΌλ³΄κ² νλ λ°©μμ΄λ€. | ||
λ‘€λ°±μ΄ λΉ λ₯΄μ§λ§ μμ€ν μμμ΄ μ΅μ λλ°° μ΄μ νμνλ€. | ||
|
||
- μ₯μ | ||
- μ κ· λ²μ μ λ¬Έμ λ°μμ λΉ λ₯Έ λ‘€λ°±μ΄ κ°λ₯νλ€. | ||
- λ¨μ | ||
- μΈνλΌ λ¦¬μμ€κ° 2λ°°λ‘ λ€μ΄κ°λ€. | ||
- κΈ°μ‘΄ μ΄μλκ³ μλ μλ²μμ Long-term νΈλμμ μ΄ μνμ€μ΄μλ€λ©΄ μ νμ μ΄λ€ λ°©μμΌλ‘ μ²λ¦¬ν μ§ μΆ©λΆν κ³ λ €κ° νμνλ€. | ||
|
||
[λ λ/λΈλ(Red/Black) λ°°ν¬λΌκ³ νννκΈ°λ νλ€.](https://octopus.com/blog/blue-green-red-black) | ||
|
||
### μΉ΄λ리(Canary) | ||
![canary.png](https://t1.daumcdn.net/cfile/tistory/9946A3495B0DDDB12E) | ||
|
||
μΉ΄λ리μλΌλ μμμ μ λν λ°°ν¬λ°©μμ΄λ€. μλ μ΄ κ΄λΆλ€μ΄ κ΄μ°μμ μ λ κ°μ€κ° λμ€λ κ²μ μμλ΄κΈ° μν΄ κ°μ€μ λ―Όκ°ν μΉ΄λ리μλ₯Ό κ΄μ°μμ ν€μ λ€κ³ νλ€. μΉ΄λ리μκ° μ£½μΌλ©΄ μ λ κ°μ€κ° λμ€λ κ²μΌλ‘ νλ¨νκ³ μ‘°μΉλ₯Ό μ·¨νλ€κ³ νλλ°, μ΄ κ°λ μ λ°°ν¬μ λ΅μ μ°¨μ©ν κ²μ΄ μΉ΄λ리 λ°°ν¬μ΄λ€. | ||
|
||
![canary-deployment.png](https://t1.daumcdn.net/cfile/tistory/99E6E74C5C8737EC0E) | ||
|
||
μλ‘μ΄ λ²μ μ΄ μ΄μνκ²½μ μ ν©νμ§ μννλ λ°°ν¬ μ λ΅μ΄λ€. μΉ΄λ리 λ²μ μ μΌλΆμ νΈλν½μ μ£Όμ΄μ κ²μ¦ νμ νΈλν½μ λλ €κ°λ©΄μ μ κ· λ²μ μ λλ €λκ°λ€. μΉ΄λ리 λ²μ μΌλ‘ κ°λ νΈλν½μ λ¨μν λΉμ¨λΏλ§ μλλΌ λλ€ νΉμ μ¬μ©μμ νΉμ νλ‘νμ κΈ°λ°μΌλ‘ λΌμ°ν ν μ μλ€. | ||
|
||
- μ₯μ | ||
- λ°°ν¬ν μΉ΄λ리 λ²μ μΌλ‘ μ©λ/λΆνμ°μ ν μ€νΈ(Load/Capacity Testing)κ³Ό A/B ν μ€νΈλ₯Ό μ§νν μλ μλ€. | ||
- μΉ΄λ리 λ²μ μ ν μ€νΈνλ μ΄κΈ° λ¨κ³μμλ λ‘€λ°±μ΄ μ©μ΄νλ€. | ||
- λ¨μ | ||
- λͺ¨λν°λ§νλ μκ°μ΄ μ€κ°μ ν¬ν¨λκΈ° λλ¬Έμ λ°°ν¬κ° μ§νλλ μμ μκ°μ΄ κΈΈμ΄μ§λ€. | ||
|
||
|
||
### [μ°Έκ³ ] A/B ν μ€νΈ | ||
![ab-testing.png](https://t1.daumcdn.net/cfile/tistory/993F14395A92BE330A) | ||
|
||
A/B ν μ€νΈλ μλ‘ λ€λ₯Έ λ κ°μ§ λ²μ μ μ μ©μ±, μΈκΈ°λ, μμ μ± λ±μ ν μ€νΈνλ λ°©λ²λ‘ μ΄λ€. μΉ΄λ리 λ°°ν¬μ μ μ¬νλ λͺ©μ μ΄ μ¬μ©μ ν μ€νΈμ μκΈ° λλ¬Έμ λ°°ν¬μ λ΅μ΄λΌκΈ° 보λ€λ ν μ€ν λ°©λ²λ‘ μ΄λΌκ³ 보μμΌ νλ€. | ||
|
||
## μ°Έκ³ | ||
- https://blog.christianposta.com/deploy/blue-green-deployments-a-b-testing-and-canary-releases/ | ||
- https://thefif19wlsvy.tistory.com/22 | ||
- https://reference-m1.tistory.com/211 | ||
- https://jason-lim.tistory.com/3 | ||
- https://itwiki.kr/w/%EC%B9%B4%EB%82%98%EB%A6%AC_%EB%B0%B0%ED%8F%AC | ||
|
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.