ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 컨테이너 방식의 장점
    Docker 2023. 3. 31. 16:00

     

    컨테이너 

    OS나 디렉토리, IP 주소 등과 같은 시스템 자원을 각 애플리케이션이 점유하고 있는 것처럼 보일 수 있다. 

     


     

    컨테이너 방식 장점

     

    1. 의존성 충돌 문제 해결

    2. 개발과 배포 환경의 일치

    3. 쉬운 수평 확장

    4. 각 서버에 새로운 내용을 배포하기 쉬움

     


    의존성 충돌 문제 해결

     

    프로그램(A) 실행에 다른 프로그램(B)이 반드시 필요한 경우  ->  "프로그램 A는 프로그램 B에 의존 관계를 가지고 있다"

     

    A프로그램이 B라는 프로그램에 대해 의존 관계를 가질 때, 특정 B 버전의 프로그램을 요구하는 경우가 생길 수 있다. 그러나 B프로그램을 반드시 필요로 하는 C프로그램을 실행시켜야 하는데 다른 버전의 B프로그램을 필요할 경우 A와 C프로그램을 동시에 실행시킬 수 없다.  ->  "의존성 충돌"

     

    -> 컨테이너 기술은 애플리케이션을 컨테이너 내에 구성한다. 컨테이너 내에서 실행 중인 프로그램은 의존성을 공유하지 않고 각자 고유의 의존성을 가지고 있다. (의존성 충돌이 생기지 않음)

     

    < 컨테이너 격리 > 

    1. 프로세스

    - 특정 컨테이너에서 작동하는 프로세스는 기본적으로 해당 컨테이너 내에서만 액세스 가능하다.

    - 컨테이너 내에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향을 줄 수 없다. 

    **프로세스: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램

     

    2. 네트워크

    - 기본으로 컨테이너 하나에 하나의 IP주소가 할당

    **IP주소: 인터넷상에 있는 컴퓨터의 고유한 주소

     

    3. 파일 시스템

    - 컨테이너 안에서 사용되는 파일 시스템은 구획화 되어 있다. 그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다. 

     

     


    개발과 배포 환경의 일치

     

    < 개발 > 

    웹서비스 개발의 경우 여러 개발자가 하나의 애플리케이션을 만들기 위해 비슷한 개발 환경을 구축하고자 한다. 개발 환경의 경우 배포판에 따라 전혀 다른 애플리케이션 설치 과정이 진행된다. 이 과정 중에 발생하는 사소한 실수나 사전 설치 항목의 부재는 이후 문제 해결에 많은 시간을 소모하게 된다. 

     

    -> 애플리케이션 구성 자체가 컨테이너화되면 YAML 파일 하나 + 명령어 하나로 모든 애플리케이션 실행 환경 구성이 완료

    docker-compose up

    - OS에 상관없이 애플리케이션 실행 환경을 만들 수 있다. 

    - 개발을 컨테이너 위에서 진행할 경우, 모든 개발팀이 동일한 환경 하에 개발을 진행할 수 있다. 

     

    < 배포 >

    웹 서비스 배포: 어떤 애플리케이션이 특정 런타임 환경 위에서 실행되고, 사용자에게 이를 제공한다. 컨테이너에 담긴 애플리케이션을 실행하는 방식으로 서비스 제공

    -> Amazon Web Service의 EC2 상에 도커를 설치하거나, 또는 도커 컨테이너를 EC2 서버에서 실행할 수 있게 하는 서비스인 ECS를 이용하여 보다 쉽게 애플리케이션을 배포할 수 있다. 

     

     


    쉬운 수평 확장  |  각 서버에 새로운 내용을 배포하기 쉬움

     

    트래픽 분사를 위해 프록시 서버는 여러 대의 동일한 검색 서버 중 한 군데를 이용할 수 있도록 돕는다. 이러한 서버를 로드 밸런서라고 부른다.

     

    실행 환경의 일치: 동일한 애플리케이션 구성(이미지)을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행하고, 로드 밸런서에 이 서버를 추가

     

     

     

Designed by Tistory.