동일한 서버 앱이 같은 호스트에 여러 개 동작할 필요성이 있다. 만약 싱글코어인 경우 메리트 없지만 멀티 코어인 경우 throughtput과 serviceablitiy 측면에서 더 좋기때문. 문제 : 같은 서비스의 경우 포트번호가 같을 텐데 어떻게 하지? 외부에서 한 서버의 특정 서비스에 접근하려면 해당 서비스의 포트번호를 알아야 한다. host는 하나의 앱에 하나의 unique 한 포트번호를 부여한다. (하나의 포트번호는 하나의 앱에만 할당될 수 있다) 때문에 같은 서비스를 여러 개 실행시킬 경우 각 서비스의 포트번호가 달라지는 문제가 발생할 수 있다. 해결 방법 (1) Docker swarm reverse proxy SW 사용 reverse proxy SW 는하나의 포트번호로 다수의 컨테이너들에 접근..
DevOps
동일한 os 커널? ⇒ 시스템 콜이 같으면 됨. ⇒ 커널 버전 제한이 있지만 꼭 같아야하는 건 아님 ⇒ 커널 버전이 달라서 시스템콜이 달라진경우 컨테이너가 제대로 동작하지 않을 수 있음.
아이디어 = namespaces , cgroups namespaces 커널이 관리하는 오브젝트에 이름을 부여 이름을 통해 각 게스트 머신별로 독립적인 공간을 제공하고 서로가 충돌하지 않도록 한다. cgroups (Control Groups) cgroups(Control Groups)는 자원(resources)에 대한 제어를 가능하게 해주는 리눅스 커널의 기능이다. 네임스페이스 별 리소스 할당을 가능하게 한다. ex) 컨테이너 A에는 cpu 많이할당 , B에는 적게할당
VM에서 컨테이너로 마이크로 패러다임 : identical(동일한)서비스의 클러스터가 요구되기 때문 컨테이너 : 호스트 메모리에 가해지는 부담을 줄일 수 있도록 운영 체제 환경(커널)을 공유한다. 즉 컨테이너를 사용하면 여러 컨테이너들이 하나의 물리적주소공간(디스크)을 공유할 수 있어 공통된 자원에 쉽게 접근할 수 있다. [참고자료] Monolithic App vs Microservices monolithic app 모든 기능이 단일프로그램 안에 구현됨 비현실적, 비효율, 매우낮은생산성 비대한 app, 일부가 update되어도 전체 app이 re-deploy되어야함, bug가 전체 app에 영향 미침, 새로운 기술을 채택 dev-jhl.tistory.com