[Container] 1. 핵심 용어 설명

전체 흐름 소개

by 이공범


졸업 프로젝트를 진행하며 Docker를 사용할 기회가 있었습니다. 그 과정에서 Container 와 Kubernetes 등에 대해 공부할 기회가 있었는데, 인프라에 관심이 많은 저로서는 상당히 흥미로워서 정리를 해보려고 합니다.


우선 오늘은 핵심 용어를 살펴보며 전체적인 개괄을 보도록 하겠습니다.


1) 소프트웨어 개발 수명 주기 (Software Development Life Cycle)와 클라우드 배포(Deployment)

SDLC는 정보 시스템을 계획, 생성, 테스트 및 배포하는 프로세스를 말합니다. 이번 포스트에서는 테스트 단계까지 마친 소프트웨어가 있다고 가정하고, 이를 배포하는 단계를 자동화하는 것에 집중합니다.

소프트웨어 배포란 일반 사용자가 쓸 수 있도록 소프트웨어를 전달하는 것을 말합니다. 이를 위해서는 서버가 필요합니다. 이 때 개발자는 하드웨어와 소프트웨어적인 측면을 고려해야 합니다. 서버를 구축하는 것에는 2가지 방법이 있는데, 소프트웨어 공급자가 직접 하드웨어 서버를 설치하는 것과, 서버 리소스를 제공하는 클라우드 서비스 업체로부터 서버를 빌리고 사용한 만큼 돈을 주고 지불하는 것입니다. 기업의 입장에서는 클라우스 서비스 사용이 시간적/비용적 측면에서 절약됩니다.


2) 컨테이너 오케스트레이션(Container Orchestration)과 쿠버네티스(Kubernetes)

컨테이너(Container)란 환경에 구애받지 않고 실행하기 위해 필요한 모든 요소들을 포함시킨 소프트웨어 패키지를 말합니다. 클라우드 서비스를 사용하여 사용자들에게 소프트웨어를 배포하더라도, 개발은 로컬(local)에서 이루어집니다. 로컬이란 각 개발자의 PC에 개발 및 테스트 환경 서버를 세팅한 환경입니다. 그런데 한 회사의 개발자들은 각자 개발에 사용하는 컴퓨터가 다양하여(Mac, Windows, etc), 프로그램에서 사용하는 개발 도구들의 버전을 잘 맞추지 않는다면 개발 진행에 큰 문제가 발생할 수 있습니다. 이를 해결해주는 것이 컨테이너 기술입니다.

이 컨테이너를 하나만 사용하지 않고 여러 개를 사용할 수 있게 도와주는 것이 컨테이너 오케스트레이션입니다. 컨테이너 오케스트레이션에서 거의 표준화 기술로 취급되는 서비스가 바로 쿠버네티스 (Kubernetes)입니다. 구글에 의해 설계되었고 현재는 리눅스 재단에서 관리하는 오픈 소스 소프트웨어입니다.


3) 마이크로서비스 아키텍쳐(Micro Service Architecture)

컨테이너 오케스트레이션을 사용하여 소프트웨어를 구성하게 될 경우 개발자는 하나의 서비스만 이용하지 못합니다. 빌드 및 배포는 각 단계가 복잡하면서도 서로 유기적으로 연계되기 때문에, 단계마다 특징적인 단일 서비스를 여러 개 연결하여 하나의 거대한 서비스를 구성하게 됩니다. 이를 마이크로서비스 아키텍처라고 하며, 바로 이 지점 때문에 개발자는 전체적인 기술 흐름을 이해하기가 어려워집니다.


그림 1. 마이크로서비스의 이해


4) 엣지 컴퓨팅 (Edge Computing)

엣지 컴퓨팅은 분산 컴퓨팅의 한 일종으로, 핵심은 인터넷에 연결된 여러 컴퓨터들의 처리 능력을 이용하여 거대한 문제를 해결하는 것입니다. 현대에는 개인이 소유한 IoT 장치가 늘어남에 따라 네트워크에 요구되는 정보량이 대폭 증가했습니다. 그래서 전송 속도 및 사용자 요청에 대한 응답 시간이 보장되기 어려워졌고, 이에 대응하여 필요한 곳에 추가적으로 데이터 저장소와 연산을 도입합니다. 중앙에서 모든 정보량을 처리하지 않고 각 엣지로 분산시켜 연산을 하기 때문에, 문제가 되었던 속도 문제가 해결됩니다. 초기에는 보안 및 기기 간 동기화 지연 등 에러가 있었지만, 컨테이너 기술의 등장으로 해결이 되면서 폭발적인 발전을 이루었습니다.

스크린샷 2023-05-08 오전 9.48.54.png 그림 2 클라우드와 분산 컴퓨팅

5) 5G + MEC (Mobile Edge Computing)

MEC는 다중 엑세스 엣지 컴퓨팅 혹은 모바일 엣지 컴퓨팅이라고도 합니다. 무선 기지국에 분산 클라우드 컴퓨팅 기술을 적용하여, 중앙의 데이터센터로부터 사용자와 가까운 네트워크의 엣지로 정보량을 분산시킵니다. 5G의 가장 큰 특징은 초저지연 속도인데, 망 외부 응용 서비스와 연결 시 높은 지연이 발생하기 때문에 기술 적용에 치명적입니다. 이때 MEC를 이용하면 외부 응용서버를 5G 망 내에서 서비스 할 수 있어 지연 시간을 최소화 할 수 있습니다.

이 기술은 고용량 서비스의 저 지연 속도(빠른 응답시간) 등에 사용됩니다. 지연 시간이 짧다는 것은 실시간이 중요한 서비스들에서 매우 크게 작용합니다. 예를 들어 보도 방송 등의 송출에서의 실시간 중계나, 스포츠 경기에서 선수들의 움직임 확인이 집에서 가능해집니다. 혹은 차량 증강 현실 네비게이션 등 도로 사정을 차 안에서 모니터로 파악할 수 있습니다. 한국에서는 SKT가 집중해서 개발하고 있습니다.

스크린샷 2023-05-08 오전 9.49.50.png 그림 3 5G MEC


6) AWS Wavelength, EC2, 그리고 EKS

아마존 웹 서비스 (AWS)는 대표적인 클라우드 컴퓨팅 사업 서비스 업체입니다. 이들은 다른 웹 사이트나 클라이언트의 응용 프로그램에 대해 컴퓨팅 자원을 제공합니다.

- EC2 (Elastic Compute Cloud)

서버가 동작하기 위한 대부분의 자원을 지원하는 컴퓨팅 플랫폼입니다. 보안, 스토리지, 네트워킹, 스케일링 등을 저렴한 가격에 공급하고 있습니다.

- EKS (Elastic Kubernetes Service)

AWS의 클라우드와 클라이언트의 데이터센터에서 쿠버네티스를 실행하는데 사용할 수 있는 관리형 쿠버네티스 서비스입니다. 주요 업무의 트래픽을 가시적으로 확인할 수 있는 컨트롤 플레인의 가용성 및 확장성을 지원합니다.

- Wavelength

지연시간이 짧은 5G 디바이스용 모바일 엣지 컴퓨팅 인프라 소스들을 지원합니다.


7) 오픈 소스 소프트웨어(Open Source Software)

오픈소스 소프트웨어(OSS)는 소프트웨어의 핵심적인 부분인 소스 코드를 공개적으로 접근 가능하게 설정하여 누구나 자유롭게 확인, 수정, 배포할 수 있는 일종의 카피레프트입니다. 소프트웨어 코드가 저작권법에 의해 보호받을 수 있는 산물로 취급받게 된 이후, 개발자가 개인 작업을 진행하는데 적합하도록 기존에 출시된 소프트웨어를 맞춤화 할 수 없게 되었습니다. 이에 반하여, 전 세계의 개발자들이 함께 테스트/개발이 가능하도록 하자는 취지에서 시작되었습니다.

소스 코드를 공개하는 곳은 보통 깃허브(GitHub)로, 개발자들의 공유 문서 편집기입니다. 오픈 소스 등록을 위해서는 라이선스를 선언하면 됩니다. 개인 혹은 기업이 특정 OSS를 발전시켜 재배포하고 싶다면, 발전시킨 프로그램 역시 같은 라이선스를 사용하여 무료로 열어 두어야 합니다.





Reference

그림 1 마이크로 서비스 이해 - 마틴 파울러,“microservices”, https://martinfowler.com/articles/microservices.html , 2023년 04월 13일

그림 2 클라우드와 분산 컴퓨팅 - 위키피디아, “에지 컴퓨팅”, https://ko.wikipedia.org/wiki/에지_컴퓨팅 , 2023년 04월 14일

그림 3 5G MEC- 5G Multi-access Edge Computing 표준기술 동향, Electronics and Telecommunications Trends, https://ettrends.etri.re.kr/ettrends/197/0905197006/046-059_이승익_197호.pdf, 2023년 04월 13일

keyword
작가의 이전글브런치를 선택한 이유