안녕하세요, 2주 만에 다시 돌아온 3픽레터 페넬로피입니다. 본격적인 장마가 시작되었는데요. 올해 장마는 꽤 오래, 그리고 길게 지속될 거라고 합니다. 긴 장마로 레인부츠를 구매하실 분들이 많으실 것 같은데요, 레인부츠를 구매하고 나면 긴 장마를 대비할 수 있다는 안도감이 들지 않을까 생각합니다.
장마로 인해 쇼핑 리스트가 바뀌었듯이, 개발 환경의 변화는 컨테이너가 가져왔다 해도 과언이 아닌 것 같습니다. 이번 3픽레터 주제는 컨테이너가 어떻게 개발 환경을 바꿨는지, 컨테이너의 기본 기술은 어떤 것인지 소개하고자 합니다.
컨테이너는 소프트웨어 서비스를 실행하는데 필요한 특정 버전의 프로그래밍 언어 런타임과 라이브러리와 같은 종속 항목이 애플리케이션 코드에 함께 포함하는 경량 패키지입니다. 쉽게 말해, 개발에 필요한 코드, 라이브러리, CPU, 리소스 등이 하나의 컨테이너에 담겨있어 테스트 환경, 로컬 등 실행 환경이 바뀌어도 안정적으로 실행할 수 있는 것이 특징입니다.
최근 기업들이 IT 경쟁력이 비즈니스 경쟁력이라고 생각하고, IT 변화에 맞게 비즈니스 전략도 변화하고 있는 추세입니다. 빈번한 배포를 위한 CI/CD, 다운타임 없이 안정적인 서비스 유지를 위한 MSA는 현대적인 IT 핵심 요소가 되었습니다.
컨테이너는 서버 머신 리소스의 일부만 사용하기에 효율성을 높일 수 있지만, 컨테이너 수 증가에 따라 컨테이너 관리를 위한 부하가 발생하고 컨테이너 기반의 서비스 아키텍처 관리를 위한 새로운 컴포넌트의 필요성이 나타났습니다. 이를 위해 등장한 것이 컨테이너 오케스트레이션 도구입니다.
컨테이너에 대한 이해와 컨테이너 오케스트레이션 툴에 대한 자세한 설명은 아래 버튼을 클릭하시면 확인할 수 있습니다.
컨테이너는 1개 이상의 프로세스를 격리시켜 호스트 OS 환경에 대해 알 수 없게 구성되어 있습니다. 예를 들어, 컨테이너는 전용의 root directory를 부여받으며, host 파일에는 접근할 수 없게 되어있습니다. 격리된 루트 디렉터리에는 런타임 환경을 넣는데요. 런타임 환경이란 프로그램이 정상적으로 실행되기 위한 환경입니다. 호스트와 구분된 런타임 환경에서는 개발이나 배포가 쉬워지는데요. 아래 링크에서 JAVA와 Python 환경에서 컨테이너 구성과 설치 방법을 확인할 수 있습니다.
경량화된 컨테이너 기술이 등장하면 지속적인 개발과 빠른 배포가 가능하고, 복잡한 마이크로 서비스를 위한 시스템 구축이 가능하게 되었습니다. 앞서 언급한 대로, 많은 컨테이너를 관리하기 위해서 컨테이너 오케스트레이션 솔루션이 등장하고, 그중에서 보편적으로 쿠버네티스가 많이 확산되었습니다.
쿠버네티스가 등장하면서 기존처럼 서버와 애플리케이션, 그리고 데이터베이스 사이의 물리적 관계를 복합적으로 분석할 수 없게 되었습니다. 디지털 트랜스포메이션이 비즈니스 전략과 IT 변화를 바꾸었고, 컨테이너와 쿠버네티스가 등장하게 되어 모니터링의 관점을 완전히 바꿨습니다.
쿠버네티스와 컨테이너 환경에서 모니터링은 어떻게 바뀔까요? 아래 유튜브 영상에서 확인하실 수 있습니다.
쿠버네티스 환경의 대표적인 보안 기능 3가지 > 쿠버네티스 환경에서 보안이란 쿠버네티스 클러스터의 안정성과 보안성을 유지하는 것을 의미합니다. 쿠버네티스 환경을 지키기 위한 대표적인 보안 기능 세 가지를 확인해 보시고, 쿠버네티스 기반 서비스의 보안도 챙기세요.
쿠버네티스만 노리는 보안 공격, 취약점은 무엇이 있을까? > 쿠버네티스 환경에서 발견된 공통 취약점은 서비스 거부, 권한 에스컬레이션, 우회, 버퍼 오버플로, 임의 코드 실행, 디렉터리 또는 파일 통과 등인데요. 쿠버네티스 재단(CNCF)에 의하면, 쿠버네티스 배포에서 보안 표준을 구현하면 컨테이너 공격에 대한 노출을 줄일 수 있다고 설명했습니다.