• toc {:toc}

Virtualization

  • μžλ°” 가상머신

  • λ‚΄κ°€ μ½”λ”©ν•œ ν”„λ‘œκ·Έλž¨μ΄ μ–΄λ–€ μš΄μ˜μ²΄μ œμ—μ„œλ„ λŒμ•„κ°ˆ 수 μžˆλ„λ‘ λ§Œλ“€κ³  μ‹Άμ—ˆλ‹€.

  • 코딩을 ν•œ ν”„λ‘œκ·Έλž¨μ„ κ°€μ§œ κΈ°κ³„μ–΄λ‘œ λ§Œλ“€κ³ , κ°€μ§œ 기계어λ₯Ό 각 μš΄μ˜μ²΄μ œμ—μ„œ 이해할 수 μžˆλŠ” νˆ΄μ„ λ§Œλ“€λ©΄μ„œ μ–΄λ–€ μš΄μ˜μ²΄μ œμ—μ„œλ„ λŒμ•„κ°ˆ 수 μžˆλ„λ‘ λ§Œλ“€μ—ˆλ‹€.

  • 가상화(Virtualization) : μ–΄λ–€ κ²ƒμ˜ κ°€μƒμ˜ 버전을 λ§Œλ“œλŠ” ν–‰μœ„.

    • μ’…λ₯˜ : μ†Œν”„νŠΈμ›¨μ–΄, λ©”λͺ¨λ¦¬, μŠ€ν† λ¦¬μ§€, 데이터, λ„€νŠΈμ›Œν¬
    • μ—­ν• 
      • ν•˜λ‚˜μ˜ μ»΄ν“¨ν„°μ—μ„œ μ—¬λŸ¬ 운영체제 μΈμŠ€ν„΄μŠ€κ°€ λ™μ‹œμ— 싀행될 수 μžˆλ„λ‘ ν•œλ‹€.
      • ν•˜λ“œμ›¨μ–΄λ₯Ό μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° λΆ„λ¦¬ν•˜λŠ” μˆ˜λ‹¨.
      • μ‹€μ œλ‘œλŠ” 물리적인 ν•˜λ“œμ›¨μ–΄λ₯Ό λ‚˜λˆ„μ–΄ μ‚¬μš©ν•˜λŠ” κ²ƒμ΄μ§€λ§Œ κ°€μƒλ¨Έμ‹ μ˜ μž…μž₯μ—μ„œλŠ” ν• λ‹Ή 받은 ν•˜λ“œμ›¨μ–΄κ°€ μ‹€μ œ ν•˜λ“œμ›¨μ–΄λΌκ³  μƒκ°ν•œλ‹€.
  • Hypervisor Virtualization

  • HypervisorλŠ” 호슀트 머신에 λ‹€μˆ˜μ˜ 가상머신듀을 μ‹€ν–‰ν•  수 있고 각 가상머신에 Guest OSλ₯Ό 올릴 수 μžˆλ‹€.

  • Host OS μœ„, ν•˜λ“œμ›¨μ–΄ μœ„μ— Hypervisorλ₯Ό μ˜¬λ¦¬λŠ” 2κ°€μ§€ νƒ€μž…μœΌλ‘œ λ‚˜λˆ„μ–΄μ§„λ‹€.

  • Type1 - Hardware

    • ν•˜λ“œμ›¨μ–΄ μœ„μ— 직접 Hypervisorλ₯Ό 올렀 κ΅¬ν˜„ν•  수 μžˆλ„λ‘ ν•œλ‹€.
  • Type2 - Host OS

    • ν•˜λ“œμ›¨μ–΄ μœ„μ— Host OSλ₯Ό 올리고 Host OS μœ„μ— Hypervisorλ₯Ό μ˜¬λ¦°λ‹€.
  • Virtual Machine Monitor : VMsλ₯Ό λ§Œλ“€κ³  μ‹€ν–‰μ‹œν‚€λŠ” κ³Όμ •

  • μž₯점

    • λΉ„μš©μ˜ νš¨μœ¨μ„± : 각 물리적 ν•˜λ“œμ›¨μ–΄λ₯Ό μ—¬λŸ¬ VM의 κ²ƒμœΌλ‘œ λ‚˜λˆ„μ–΄ μ‚¬μš©ν•œλ‹€.
    • 규λͺ¨ 섀정이 쉽닀 : VM을 λ§Œλ“œλŠ”λ° λ“œλŠ” μ‹œκ°„μ΄ μ§§λ‹€.
  • 단점

    • 각 VM은 OS 전체λ₯Ό ν¬ν•¨ν•˜κΈ° λ•Œλ¬Έμ— λ§Žμ€ μš©λŸ‰μ„ μ°¨μ§€ν•œλ‹€.
    • VM은 λΆ€νŒ…μ΄ λŠλ¦¬λ‹€.
  • Guest Linux OS over Host Linux OS 문제

    • 데이터 μ„Όν„°μ—μ„œ λ¦¬λˆ…μŠ€κ°€ 무료이기 λ•Œλ¬Έμ— Host OS둜 λ¦¬λˆ…μŠ€ μ‚¬μš©ν•œλ‹€.
    • ν΄λΌμš°λ“œμ—μ„œ μ‚¬μš©μžλ₯Ό μœ„ν•΄ μ—¬λŸ¬ ν™˜κ²½μ„ μœ„ν•΄ VM을 μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žμ€λ°, Guest OS의 κ²½μš°μ—λ„ λ¦¬λˆ…μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ μ€‘λ³΅λœ 운영체제λ₯Ό κ°–κ²Œ λœλ‹€.
    • 즉, μ€‘λ³΅λœ 운영체제λ₯Ό κ°–λŠ”λ‹€λŠ” 것은 더 λ§Žμ€ λΉ„μš©μ„ μ‚¬μš©ν•œλ‹€λŠ” 것이닀.
    • κ²°κ΅­, ꡳ이 VM을 κ³ μ§‘ν•  ν•„μš” 없이, λ‚΄κ°€ μ›ν•˜λŠ” 만큼의 CPU, μŠ€ν† λ¦¬μ§€, λ„€νŠΈμ›Œν¬λ₯Ό κ°€μ Έμ˜€λ©΄ λ˜λŠ” 일이닀.
  • λ¦¬λˆ…μŠ€ μ»¨ν…Œμ΄λ„ˆ

  • κ³Όκ±° μœ λ‹‰μŠ€ μ»΄ν“¨ν„°λŠ” λΉ„μŒŒκΈ° λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ 컴퓨터λ₯Ό μ—¬λŸ¬ λͺ…이 μ‚¬μš©ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ‚¬μš©ν–ˆλ‹€.

  • μœ λ‹‰μŠ€λ₯Ό 이은 λ¦¬λˆ…μŠ€λŠ” 이에 따라 μΌμ‹œμ μœΌλ‘œ Guestλ₯Ό μ—΄μ–΄μ„œ κ·Έ μ•ˆμ—μ„œ μž‘μ—…ν•˜κ³  μ‚­μ œν•˜λ©΄ μ΄μ „μ˜ μ„€μ •κ°’κ³Ό λ™μΌν•œ ν˜•νƒœκ°€ λœλ‹€.

  • ν•„μš”ν•  λ•Œ μ„€μΉ˜ν•˜κ³  ν•„μš”ν•˜μ§€ μ•Šμ„ λ•Œ μ‚­μ œν•˜λ©΄ κΉ”λ”ν•˜κ²Œ μ‚­μ œλœλ‹€.

  • μ»¨ν…Œμ΄λ„ˆ

  • App ꡬ동을 좔상화해쀀닀. 즉, ν”„λ‘œκ·Έλž¨ μ½”λ“œ, 기타 라이브러리 등을 ν•¨κ»˜ νŒ¨ν‚€μ§€λ‘œ 묢은 것이닀.

  • Host OS 컀널을 κ³΅μœ ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

  • μ»¨ν…Œμ΄λ„ˆ 각각은 μ‚¬μš©μž κ³΅κ°„μ—μ„œ λ…λ¦½λœ ν”„λ‘œμ„ΈμŠ€λ‘œ λ™μž‘ν•œλ‹€.

  • μž₯점

    • VM 보닀 훨씬 μš©λŸ‰μ΄ 적닀.
    • OS 컀널을 κ³΅μœ ν•œλ‹€.
    • 가볍기 λ•Œλ¬Έμ— μ‹œμž‘μ΄ 더 λΉ λ₯΄λ‹€.
  • 가상 λ¨Έμ‹  VS μ»¨ν…Œμ΄λ„ˆ

image

  • μž‘μ€ λ¦¬λˆ…μŠ€ OSλ₯Ό Dockerκ°€ κ°€μ§€κ³  있고 κ·Έ μœ„μ—μ„œ μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰μ‹œν‚¬ 수 μžˆλ‹€.