πŸ‘·πŸ» Architecture

2편. Hosted& Hypervisor VM, Container -> MSAλ₯Ό μ§€νƒ±ν•˜λŠ” κ΅¬μ„±μš”μ†Œ

DevPoong 2024. 3. 31. 23:53

MSA μ•„ν‚€ν…μ²˜

μ‹€λ¬΄μ—μ„œ μ „ν•˜λŠ” λ”°λˆν•œ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜(MSA) 이야기

MSAλ₯Ό κ΅¬μ„±ν•˜κΈ° μœ„ν•΄μ„œ λ§Žμ€ μ™ΈλΆ€ κ΅¬μ„±μš”μ†Œλ“€μ΄ μ‚¬μš©λœλ‹€.
κ°€μž₯ μ•„λž˜λΆ€ν„° 기반인 인프라 μ˜μ—­, 인프라 μ˜μ—­ μœ„μ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬λ™ν•˜κΈ° μœ„ν•œ ν”Œλž«νΌ μ˜μ—­, ν”Œλž«νΌ μ˜μ—­ μœ„μ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ˜μ—­μœΌλ‘œ κ΅¬μ„±λœλ‹€.

 

가상화 기술이 λ‚˜μ˜¨ 이유

μ˜ˆμ „μ—, ν•™λ‚΄ μ»¨νΌλŸ°μŠ€μ—μ„œ μ΄λŸ¬ν•œ 주제둜 λ°œν‘œλ₯Ό μ§„ν–‰ν•œ 적이 μžˆμ–΄, ν•΄λ‹Ή 자료둜 λ‹€μ‹œ μ •λ¦¬ν–ˆλ‹€.

가상 인프라 ν™˜κ²½μ„ ν™œμš©ν•  λ•Œ, Virtual Machineκ³Ό Container 기반 Product 쀑에 ν•˜λ‚˜λ₯Ό 선택해야 ν•œλ‹€.

가상화 기술이 λ‚˜μ˜€κΈ° μ „μ—λŠ”

  • ν•œλŒ€μ˜ μ„œλ²„λŠ” ν•˜λ‚˜μ˜ μš©λ„λ‘œλ§Œ μ‚¬μš© κ°€λŠ₯
  • λ‚¨λŠ” μ„œλ²„ 곡간은 κ·ΈλŒ€λ‘œ 방치
  • ν•˜λ‚˜μ˜ μ„œλ²„μ— ν•˜λ‚˜μ˜ 운영체제만 μ‹€ν–‰ κ°€λŠ₯

ν•˜λ‹€λŠ” μƒλ‹Ήνžˆ λΉ„νš¨μœ¨μ μΈ λ¬Έμ œκ°€ μžˆμ—ˆλ‹€.

 

μ„œλ²„μ˜ μ„±λŠ₯을 λ‚˜λˆ μ„œ μ‚¬μš©ν•  수 있게 ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œκ²Œ 가상화 기술이고, κ·Έ μ€‘μ—μ„œ Hypervisor 기반의 가상화가 μΆœν˜„ν•˜κ²Œ λ˜μ—ˆλ‹€.

 

 

Hypervisor 기반의 가상화

HypervisorλŠ” μ•„λž˜μ™€ 같은 νŠΉμ§•μ΄ μžˆλ‹€.

  1. λ…Όλ¦¬μ μœΌλ‘œ 곡간을 λΆ„ν• ν•˜μ—¬ VMμ΄λΌλŠ” 독립적인 가상 ν™˜κ²½μ˜ μ„œλ²„λ₯Ό 이용 κ°€λŠ₯ν•˜κ²Œ 함.
  2. Host Systemμ—μ„œ λ‹€μˆ˜μ˜ Guest OSλ₯Ό ꡬ동할 수 있게 됨.
  3. H/Wλ₯Ό κ°€μƒν™”ν•˜λ©΄μ„œ H/W와 각각의 VM을 λͺ¨λ‹ˆν„°λ§ν•˜λŠ” 쀑간 κ΄€λ¦¬μž 역할을 함.

 

λ˜ν•œ, 두 가지 νƒ€μž…μ΄ μ‘΄μž¬ν•œλ‹€. (Bare-Metal Hypervisor, Hosted Hypervisor)

(1) Bare-Metal Hypervisor

Host의 ν•˜λ“œμ›¨μ–΄μ—μ„œ 직접 μ„€μΉ˜λ˜μ–΄ κ΅¬λ™λ˜λ©°, Guest OSλ₯Ό κ΄€λ¦¬ν•œλ‹€.

μ•„λž˜μ˜ νŠΉμ§• λ•Œλ¬Έμ— Enterprise 데이터 센터와 μ„œλ²„ 기반 ν™˜κ²½μ—μ„œ 일반적으둜 μ‚¬μš©λ˜λŠ” ꡬ쑰라고 μ•Œκ³  μžˆλ‹€.

  • 물리적 HW에 직접 μ„€μΉ˜λ˜κΈ° λ•Œλ¬Έμ— Host OSλ₯Ό ν†΅ν•˜μ§€ μ•Šκ³  ν•˜λ“œμ›¨μ–΄ μžμ›μ— 직접 Accessν•˜κ²Œ λ˜λ―€λ‘œ μ˜€λ²„ν—€λ“œκ°€ 쀄어든닀.
  • Host OSκ°€ μ—†μ–΄μ„œ OS μˆ˜μ€€μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ³΄μ•ˆ 취약점이 μ—†λ‹€.
  • 쀑앙 집쀑식 관리 도ꡬ와 ν•¨κ»˜ μ‚¬μš©λ˜μ–΄ ν™•μž₯성이 λ†’λ‹€.

 

(2) Hosted Hypervisor

VMware의 Workstationκ³Ό Oracle의 VirtualBoxκ°€ 이 ν˜•μ‹μ΄λ©°, μ—¬λŸ¬κ°€μ§€ νŠΉμ§•μ΄ μžˆλ‹€.

μ•„λž˜μ˜ νŠΉμ§• λ•Œλ¬Έμ—, μ†Œκ·œλͺ¨ λΉ„μ§€λ‹ˆμŠ€, 개발 및 ν…ŒμŠ€νŒ… ν™˜κ²½, 개인 μ‚¬μš© ν™˜κ²½μ„ μœ„ν•΄ μ‚¬μš©λœλ‹€.

  • 일반적인 SW처럼 Host OS μœ„μ—μ„œ μ‹€ν–‰λœλ‹€.
  • HW μžμ›μ„ VM λ‚΄λΆ€μ˜ Guest OS에 Emulate ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ˜€λ²„ν—€λ“œκ°€ ν¬μ§€λ§Œ, Guest OS μ’…λ₯˜μ— λŒ€ν•œ μ œμ•½μ΄ μ—†κ³  κ΅¬ν˜„μ΄ 쉽닀.
  • Host OS의 λ¬Έμ œκ°€ Guest OS에 영ν–₯을 쀄 수 μžˆλ‹€.
  • 좔가적인 ν•˜λ“œμ›¨μ–΄ 투자 없이 기쑴의 μ»΄ν“¨νŒ… μžμ›μ„ κ·ΈλŒ€λ‘œ ν™œμš©ν•˜μ—¬ 가상화λ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€.

 

 

μ»¨ν…Œμ΄λ„ˆ 기반의 가상화

λŒ€ν‘œμ μΈ μ»¨ν…Œμ΄λ„ˆ 기반 μ˜€ν”ˆμ†ŒμŠ€ ν”Œλž«νΌ

μ»¨ν…Œμ΄λ„ˆλž€ λ¬΄μ—‡μΌκΉŒ?

 

μ»¨ν…Œμ΄λ„ˆλŠ” μ½”λ“œμ™€ λͺ¨λ“  쒅속성을 νŒ¨ν‚€μ§€ν™”ν•΄μ„œ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ ν•˜λ‚˜μ˜ μ»΄ν“¨νŒ… ν™˜κ²½μ—μ„œ λ‹€λ₯Έ μ»΄ν“¨νŒ… ν™˜κ²½μœΌλ‘œ λΉ λ₯΄κ³  μ•ˆμ •μ μœΌλ‘œ μ‹€ν–‰λ˜λ„λ‘ ν•˜λŠ” SW의 ν‘œμ€€ λ‹¨μœ„λΌκ³  ν•œλ‹€.

 

μ΄λŸ¬ν•œ Containerμ•ˆμ— λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž¨, μ‹€ν–‰ν™˜κ²½μ„ μΆ”μƒν™”ν•˜κ³  λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ˜ 배포 및 관리λ₯Ό λ‹¨μˆœν™” ν•  수 μžˆλ‹€.

 

 

도컀 μ»¨ν…Œμ΄λ„ˆμ˜ 가상화 기술

도컀가 λ°”λ‘œ μ»¨ν…Œμ΄λ„ˆ 기반 κΈ°μˆ μ„ μ‚¬μš©ν•˜λŠ” μ˜€ν”ˆμ†ŒμŠ€ ν”Œλž«νΌμ΄λ‹€.

μ•„λž˜μ™€ 같은 νŠΉμ§•μ΄ μžˆλ‹€.

  1. 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” Linux 기반의 OSμ—μ„œλ§Œ λ™μž‘ν•œλ‹€.
  2. Hypervisor VM처럼 Docker Engine이 Host OS μœ„μ—μ„œ λ™μž‘ν•œλ‹€.
  3. μ»¨ν…Œμ΄λ„ˆκ°€ μ œκ³΅ν•˜λŠ” 격리 κΈ°λŠ₯ 내뢀에 μƒŒλ“œλ°•μŠ€κ°€ μžˆμ§€λ§Œ, κ²°κ΅­ 같은 Host의 λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ™€ λ™μΌν•œ Kernel을 κ³΅μœ ν•œλ‹€.
    βœ… μ»€λ„μ΄λž€? -> OS의 핡심 뢀뢄이고, SW와 HW μ‚¬μ΄μ—μ„œ μ€‘κ°œμž 역할을 ν•œλ‹€. μ»΄ν“¨ν„°μ˜ HW μžμ›(CPU, Memory, I/O Device) λ“±κ³Ό ν†΅μ‹ ν•˜κ³ , μ‹œμŠ€ν…œμ˜ λͺ¨λ“  SW μž‘μ—…μ„ 관리 및 μ‘°μ •ν•˜λŠ” μ±…μž„μ„ 가지고 μžˆλ‹€.
  4. μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” Host μ‹œμŠ€ν…œμ—μ„œ λ³Ό 수 μžˆλ‹€.

 

 

Hypervisor와 λΉ„κ΅ν•œ 도컀 μ»¨ν…Œμ΄λ„ˆ 가상화 기술

  1. DockerλŠ” VM처럼 Hardwareλ₯Ό κ°€μƒν™”ν•΄μ£ΌλŠ” 것이 μ•„λ‹ˆλΌ, Containerλ₯Ό Isolation μ‹œν‚€λŠ” 역할이닀.
  2. Container μžμ²΄μ—λŠ” Kernel λ“±μ˜ OS 이미지가 λ“€μ–΄μžˆμ§€ μ•Šλ‹€.
  3. Kernel은 Host OSλ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜κ³ , Host OS와 Container OS의 λ‹€λ₯Έ λΆ€λΆ„λ§Œ Container 내에 같이 Packingν•œλ‹€.
  4. Host OS의 Process 곡간을 Container와 κ³΅μœ ν•˜λ©° μ‹€μ œλ‘œ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰ν•œ λͺ…령이 Host OSμ—μ„œ μˆ˜ν–‰λœλ‹€.

μš°μ„ , μœ„μ™€ 같은 Hypervisor와 λΉ„κ΅ν–ˆμ„ λ•Œ 도컀 κΈ°μˆ μ— λŒ€ν•œ 차이점이 μžˆλ‹€.
μΆ”κ°€μ μœΌλ‘œ λ§ν•˜μžλ©΄, Linuxκ°€ μ•„λ‹Œ ν™˜κ²½μ—μ„œ 도컀λ₯Ό μ„€μΉ˜ν•  λ•Œ Light Weight Linuxκ°€ ν•¨κ»˜ μ„€μΉ˜λœλ‹€.
λ˜ν•œ, λ§Œμ•½ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ Host OS와 λ‹€λ₯Έ Cent OSλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€κ³  κ°€μ •ν•˜λ©΄, Cent OS의 전체 이미지가 ν•¨κ»˜ μ»¨ν…Œμ΄λ„ˆμ— μ—…λ‘œλ“œ λ˜λŠ”κ²Œ μ•„λ‹ˆλΌ Host OS λ˜λŠ” Light Weight Linux와 λ‹€λ₯Έ λΆ€λΆ„λ§Œ νŒ¨ν‚€μ§•λ˜μ–΄ μ—…λ‘œλ“œλœλ‹€.

 

 

κ·Έλž˜μ„œ MSAμ—μ„œλŠ” μ–΄λ–€ 기술이 μœ λ¦¬ν•œκ°€

κ²°κ΅­, MSAμ—μ„œλŠ” VMκ³Ό μ»¨ν…Œμ΄λ„ˆ 기술 쀑 μ–΄λ–€ 것이 μœ λ¦¬ν• κΉŒ?

μ°¨μ΄λŠ”, μš°μ„  Guest OS의 μœ λ¬΄μ— λ‹¬λ €μžˆλ‹€.
Guest OSλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” VMμ—μ„œλŠ” 운영체제의 μ„€μΉ˜λ‚˜ κ΄€λ ¨ 라이브러리 μ„€μΉ˜ 같은 μ˜€λ²„ν—€λ“œκ°€ μ§€μ†μ μœΌλ‘œ λ°œμƒν•œλ‹€.

 

λ”°λΌμ„œ, Micro Service Architecture와 같이 μž‘μ€ μ„œλΉ„μŠ€λ₯Ό νŒ¨ν‚€μ§€ν•˜κ³  λ°°ν¬ν•˜κΈ°μ—λŠ” μ»¨ν…Œμ΄λ„ˆ ν™˜κ²½μ΄ 더 μ ν•©ν•˜λ‹€.

 

 

μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

MSAλ₯Ό μ μš©ν•˜κ³  λ§Žμ€ μ»¨ν…Œμ΄λ„ˆκ°€ 생겼닀고 κ°€μ •ν•΄λ³΄μž.

μ»¨ν…Œμ΄λ„ˆκ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ μˆ˜λ™μœΌλ‘œ κ΄€λ¦¬ν•˜κΈ° μ–΄λ €μ›Œμ§„λ‹€.

 

이λ₯Ό μœ„ν•΄, μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆμ˜ μžλ™ 배치 및 볡제, μž₯μ•  볡ꡬ, ν™•μž₯ 및 μΆ•μ†Œ, μ»¨ν…Œμ΄λ„ˆκ°„ 톡신, λ‘œλ“œ λ°ΈλŸ°μ‹± 등을 κ΄€λ¦¬ν•œλ‹€.

 

λŒ€ν‘œμ μœΌλ‘œ, Docker Swarmκ³Ό Kubernetesκ°€ μ‚¬μš©λœλ‹€.
ν•˜μ§€λ§Œ, Docker Swarm은 자체적으둜 μΈμŠ€ν„΄μŠ€λ₯Ό λŠ˜λ¦¬κ±°λ‚˜ μ€„μ΄κ±°λ‚˜ ν•  μˆ˜λŠ” μ—†μœΌλ―€λ‘œ, 더 λ§Žμ€ κΈ°λŠ₯을 ν™œμš©ν•˜λ €λ©΄ Kubernetesλ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

μΏ λ²„λ„€ν‹°μŠ€μ— λŒ€ν•΄μ„œλŠ” 좔후에 더 λ§Žμ€ 곡뢀λ₯Ό ν•˜κ³  정리할 μ˜ˆμ •μ΄λ‹€.