2000년 이후 애플리케이션 규모가 커짐에따라 개발기간에 대한 단축이 중요해지면서, 다양한 OS* 개발 환경 차이로 인한 오류, 복잡해진 애플리케이션 구조, 배포환경간의 불일치등 기존 배포 방식의 한계가 명확해졌습니다.
위의 문제를 해결하기위에 컨테이너 기술이 등장을 하였습니다.
컨테이너 기술은 애플리케이션과 그 실행 환경을 패키지로 묶어서 격리하는 기술입니다.
해당 기술을 사용하면 컨테이너화된 애플리케이션을
개발 환경
테스트 환경
배포(프로덕션) 환경
*퍼블릭 클라우드/프라이빗 클라우드/온프레미스
간에 이동하면서 동작과 기능을 일관성있게 유지하도록 합니다. 이와 더블어 컨테이너는 가볍고 이식성이 뛰어나기에 개발속도를 높여 줍니다.
컨테이너 기술은 애플리케이션과 실행환경을 통일하여서 독립적인 프로세스 형태로 실행되는 원리입니다.
컨테이너 이미지 : 읽기 전용 템플릿으로 애플리케이션 실행에 필요한 모든것을 포함합니다
컨테이너 : 컨테이너 이미지를 기반으로 실행된 격리된 실행환경 입니다.
컨테이너 오케스트레이션: 대규모 환경에서 여러 컨테이너를 배포, 확장, 관리, 네트워킹을 자동화하는 시스템입니다.
프로세스 란?
- 한글로 처리하다 라는 뜻을 가진 단어로 컴퓨터 공학에서는 실행중인 프로그램을 의미 합니다.
스케줄링의 대상인 Task와 같은 의미로 쓰입니다.- 최소 하나의 쓰레드 가지고 있으며, 스레드 단위로 스케줄링을 합니다.
- 하드디스크 프로그램 실행 -> 메모리 할당 -> 메모리 공간 바이너리 코드 업로드 => 프로세스 라고 불립니다
프로세스에 대한 개념을 좀더 정리를 이번주 토요일에 올려야 겠네여 ㅋㅋ
앞에서의 언급과 같이 2000년대에 이후로 컴퓨팅 자원을 효율적으로 쓰는 것에 대한 필요성이 대두됨에 따라 컨테이너라는 개념이 등장했습니다.해당 개념은 컴퓨팅 자원을 효율적으로 나누어 사용하며 타 애플리케이션에 간섭 받지 않는 격리된 환경 구축을 목표로 합니다. 컨테이너는 리눅스 컨테이너 기술을 기반으로 하며, 격리된 프로세스를 제공 합니다.
불필요한 추가 개발 리소스를 방지하기위해 다양한 실행 환경에서 모두 동일하게 실행 가능 토록 해야합니다. 컨테이너와 연관된 기술은 표준으로 관리됨에 따라 다양한 환경에서 일관성있는 실행이 가능 합니다.
빠른 배포와 스케일링을 위해 초기에 빠른 구동 속도를 가지고 있어야 하며, 컴퓨터 자원 점유를 최소화함에따라 비용절감이 가능 합니다. VM(가상머신)은 엄격한 환경인 반면, 컨테이너는 느슨한 격리된 환경이므로, 가볍게 실행이 가능합니다.
컨테이너는 애플리케이션을 실행하기 위한 작은 프로세스이며, 작고 가벼워서 다양한 환경에서 통일성 있는 실행을 제공합니다