본문 바로가기
Development/Docker & Kubernetes

chap 1. Docker를 왜 사용할까?

by 메정 2022. 8. 18.
  • contents

1. 애플리케이션의 개발과 배포가 편리

독립적인 개발 환경 보장

  • 서버를 처음에 할당받아 설정할 때 많은 설정이 요구됨.
    • OS, 라이브러리, 컴파일러, 패키지 등
    • 버전이 변경될 때마다 다시 재설정 필요
  • 우리는 가난한 대학생. 호스트 OS, 즉 우리 PC를 서버 PC로 하고 이것 저것 깔면?
    • 눈물의 대환장 파티가 일어날 수 있음
    • 그럼 서버 설정에 대한 부분을 도커 컨테이너 위에서 진행하면?
    • 도커 컨테이너에 여러 소프트웨어를 설치하고, 설정 파일을 수정해도 호스트 OS에는 영향을 미치지 않음

개발/운영 환경의 통합

  • 개발 시 컨테이너 내부에서 작업을 하고, 배포하려고 한다면?
    • 이 내부 작업을 ‘도커 이미지’라고 하는 일종의 패키지로 만들어 배포 서버에 전달
    • 이렇게 하면?
    • 배포 서버, 개발 서버 모두 동일한 환경에서 앱 운영이 가능해짐!
      • 인프라 팀에서 아. 안돌아가요 ㅠ, QA팀에서 컴파일러 버전이 다르다는데요? ㅠ 이런 일이 없겠죠?
      • 각 관계자는 테스트/운영/개발 시 문제점을 명확히 파악 가능해짐

2. 여러 애플리케이션의 독립성과 확장성이 높아짐

마이크로 서비스(Microservices) 구조

  • 마이크로 서비스(Microservices)?

    모놀리식 아키텍처의 경우, 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행되는 형태

    따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 함.

    여러 프로세스에 대한 로직이 추가되면서 복잡성으로 인해 새로운 아이디어를 구현하기가 어려워짐.

    긴밀하게 결합된 많은 프로세스이므로, 단일 프로세스의 실패로 인한 영향이 증가 → 애플리케이션 가용성에 대한 위험을 가중시킴

    Untitled

    마이크로서비스 아키텍처의 경우, 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행.

    이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신.

    서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행.

    서비스가 독립적으로 실행 → 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 배포, 확장 가능

    마이크로서비스란 무엇입니까? | AWS

7DFB605D-DB81-4DFC-8DD5-50D540C4C57F.jpeg

  • 컨테이너는 수 초 내로 생성, 시작이 가능
  • 여러 모듈에게 독립된 환경 동시 제공 가능

→ 이러한 도커의 장점을 살려 마이크로 서비스 구조에서 가상화 기술로 많이 사용됨.

ex. 웹서비스

  • DB 컨테이너 / node 컨테이너로 분리
  • 웹 서비스에 부하 발생 시 → node 컨테이너 동적으로 늘려 부하 분산
  • DB 컨테이너 / node 컨테이너를 독립적으로 관리 → 유지보수 용이

3. 도커를 설치해보자.

p19-20 에서 curl, wget 명령어로 다운 가능하지만 저는 그냥 도커 홈페이지에서 도커 데스크톱까지 깔았답니다.

Install Docker Desktop on Mac

Install Docker Desktop on Windows

'Development > Docker & Kubernetes' 카테고리의 다른 글

컨테이너 기술의 이해  (0) 2021.09.07
클라우드와 클라우드 네이티브  (0) 2021.09.07

댓글