03. 콘테이너? 뭔가 캡슐화하여 하나의 독립적으로 움직이는 것 ? 스미스 요원 만들기
콘테이너란 무엇인가 ?
근데 왜 콘테이너라는 얘기가 나오는가 ? 그래 서비스 업무를 나눈 것들을 독립적으로 패키징하여 독립적으로 동작할 수 있도록 하는 것이 중요하겠네
portability 이 개념이 중요하겠습니다.
이제 콘테이너화 한다는 것은 어느 곳에도 동일한 조건의 기본적인 환경만 주어진다면 하나 이상이 동작할 수 있는 환경을 말합니다.
java를 생각해보면 자바의 WORA(Write Once, Run Anywhere)와 비슷한 개념이다. 제임스고슬링이 전자 장비 회사(썬)를 다닐 때 다양한 장비에 계속해도 비슷한 기능을 개발하는 것이 불합리하여 JVM만 각 장비별로 구축하고 원 소스는 하나로 유지하고자 하여 만들었다고 하는데 유사한 이유가 될 것이다.
잘 패키징된 콘테이너는 이제 표준을 준수하는 어떤 곳에서도 하나 이상이 동작하기 때문에 복제, 확장, 중복, 축소 등 매우 탄력적인 서비스의 기능을 수행한다.
그럼 콘테이너의 구조는 어떠한가 ?
과거의 OS를 포함한 was 환경이 작은 파일 하나로 줄어들어 패키징된다고 생각하면 된다.
콘테이너의 코어 수와 메모리 예시
우리집 컴퓨터에 동작하는 콘테이너들
- 개인 Bookstack : http://web.joang.com:8084/shelves
- Showcase용 Bookstack : http://web.joang.com:8083
- 메타 시스템 : http://web.joang.com:8000/meta/login.do + 배치 2개 (메타 백업, Youtube Download 배치)
- DB 관리툴 (Adminer) http://192.168.0.200:8082
- Postgresql (2EA)
- Mysql (2EA)
- GitLab : http://192.168.0.200:8085/users/sign_in
- Jenkins : http://192.168.0.200:30001
- redmine : http://192.168.0.200:30002
- showcase application 5 services X 2 replicaset : http://192.168.0.200:8024
- Kubernetes Dashboard : https://192.168.0.200:31055/#/login
하나의 PC에 위 서비스가 모두 돌고 있다는 ㅎㅎ