IT 일기

Linux 관점에서 주요 기술들의 변화

Sangwoo Seo 2023. 1. 26. 18:17
* 이 게시글의 내용은 factcampus의 "DevOps 마스터 Kit with Linux, Kubernetes, Docker" 강의의 일부 내용을 인용하였습니다.

 

2022년 10월 17일, 가트너(Gartner)에서는 2023년 10대 전략 기술 동향(Gartner Top 10 Strategic Technology Trends for 2023)을 발표했습니다. 

 

1. 디지털 면역 시스템 (Digital Immune System )

2. 관찰 가능성 적용 (Applied Observability)

3. AI 신뢰, 위험 및 보안 관리 (Al Trust, Risk and Security Management - AI TRISM)

4. 산업 클라우드 플랫폼 (Industry Cloud Platforms)

5. 플랫폼 엔지니어링 (Platfrom Engineering)

6. 무선 네트워크 가치 실현 (Wireless-Value Realization)

7. 슈퍼앱 (Superapps)

8. 적응형 AI (Adaptive AI)

9. 메타버스 (Metaverse)

10. 지속가능한 기술 (Sustainable Technology)

 

기술들은 인공지능, 클라우드, 메타버스, 플랫폼 관리 및 최적화 등의 요소들을 담고 있습니다. 이렇듯 IT 기술들은 매우 빠른 속도로 변하고 있는데요, 제가 기술해볼 내용은 Linux 관점에서 기술 변화가 어떻게 이루어졌는지 또는 이루어지고 있는지 알아보려 합니다.

 

인프라 : 온-프레미스 → 클라우드

온-프레미스(On-Premise) : 자체적으로 보유하고 있는 서버나 구매한 서버에 필요한 환경들을 직접 구축하여 운영하는 것을 말합니다.

클라우드(Cloud) : 사용자의 직접적인 활발한 관리 없이 네크워크, 서버, 데이터 스토리지 등 컴퓨터 시스템 자원를 필요시 바로 제공(on-demand availability)하는 것을 말합니다.(위키백과 링크)

 

기존 온-프레미스 환경에서는 서버를 직접 설치 및 관리하였기 때문에 새로 서버를 증축할 때 물리적으로 서버를 증축해야 했고, 이 과정에서 많은 시간과 비용이 소요 되었습니다. 또한 서비스 장애, 보안 이슈 등에서 발생되는 책임과 직접 관리해야 하는 리스크를 감당해야 합니다.

 

그러나 클라우드 환경컴퓨터 시스템 자원을 필요한 만큼 요청 및 할당 받을 수 있어 간단하며 즉각적으로 인프라를 구성할 수 있습니다. 또한 클라우드 벤더사에서 제공하는 API/SDK 등을 제공 받아 모든 자원을 자동화하여 프로비저닝(provisioning) 할 수 있으며 직접 관리할 때의 리스크를 클라우드 벤더사와의 공동 책임으로 줄일 수 있습니다. 클라우드는 모든 분야에서 사용되고 있고 금융, 국방 분야와 같이 보안이 중요한 분야에서도 사용되고 있습니다.

 

( * 프로비저닝 : 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말합니다. 위키백과 링크)

 

컴퓨팅 환경 : 가상머신 → 컨테이너

가상머신(Virtual Machine, VM) :  물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터입니다. 가상 머신은 물리적 컴퓨터처럼 애플리케이션과 운영 체제를 실행합니다. 그러나 가상 머신은 물리적 컴퓨터에서 실행되고 물리적 컴퓨터처럼 작동하는 컴퓨터 파일입니다. 다시 말해 가상 머신은 별도의 컴퓨터 시스템처럼 작동합니다.

컨테이너(Container) : 데스크탑, 기존의 IT 또는 클라우드 등 어디서나 실행될 수 있도록 애플리케이션 코드가 해당 라이브러리 및 종속 항목과 함께 패키징되어 있는 소프트웨어 실행 유닛입니다. 컨테이너는 운영체제 수준에서 CPU, 메모리, 스토리지, 네트워크 리소스를 쉽게 공유할 수 있게 해주며 컨테이너가 실제로 실행되는 환경에서 애플리케이션을 추상화할 수 있는 논리 패키징 메커니즘을 제공합니다.

 

기존에 가상머신은 가장 널리 쓰였던 가상화 기술이었는데 하드웨어를 가상화하여 가상머신을 만들어 내고 그 위에 OS, API를 구동하는 방식이었습니다. 가상머신은 확장(scale up, scale out)하는 데 있어서도 가상머신의 크기나 개수를 늘리는 방법으로 진행하였습니다.

 

그러나 컨테이너 기술운영체제 기반 가상화 기술로, 컨테이너라는 단위로 API 구동에 필요한 패키지 형태로 가상화 합니다. 확장을 하는 단위도 서버 단위가 아니라 컨테이너 단위이므로 빠른 확장성을 가집니다. 이전 가상머신 기반일 때는 아무리 빨라도 수분 단위 스케일링 시간이 걸렸지만 컨테이너는 수 초 단위로 빠른 확장성을 확보할 수 있습니다.

(컴퓨터를 켜서 운영체제가 구동되고 어플리케이션이 실행 → 어플리케이션이 실행)

 

컨테이너 기술은 리눅스 기반 기술로 자원을 격리시켜가며 수행을 하기 때문에 같은 운영체제 위에서 여러 어플리케이션이 구동되어도 어플리케이션 간에 격리(isolation)가 잘 이루어집니다. 

 

가상머신 vs 컨테이너

 

서버 관리 : 쉘 스크립트 → 자동화 도구

쉘 스크립트(Shell Script) : 쉘이나 명령 줄 인터프리터(Command-Line Interpreter)에서 돌아가도록 작성 되었거나 한 운영체제를 위해 쓰인 스크립입니다.(위키백과 링크) Linux 환경에서 별도의 컴파일 없이 인터프리터로 실행할 수 있습니다.

자동화 도구(Automation Tools) : 소프트웨어를 사용하여 유저와 IT 시스템과의 상호작용으 대체하거나 줄일 수 있는 반복 가능한 지침과 프로세스를 만드는 것입니다.

 

기존에는 쉘 스크립트를 통해 모든 것을 해결했습니다. 서버와 어플리케이션이 증가함에 따라 쉘 스크립트의 사용이 늘었는데요, 쉘 스크립트는 이해하거나 코드를 짜는데 어려운 환경이기 때문에 담당자 부재시 follow up 하는데 어려움이 있고, 스크립트 자체를 작성하는데 있어 오류가 존재할 수 있습니다.

 

그래서 최근에는 자동화 도구를 많이 이용하는 추세입니다. 쉘 스크립트를 한 단계 추상화된 형태로 자원을 기술하는 도구들을 사용하여 서버의 형상 관리를 진행합니다.(ex - ansible) 그러나 여전히 쉘 스크립트는 범용적으로 사용합니다.

 

장애 대응 : 리눅스 명령의 이해 → 리눅스의 이해

기존에는 리눅스 명령어를 잘 이해해서 장애가 생긴 서버에 직접 접속하여 명령어를 통해 복구하거나 분석을 진행 하였습니다. 하지만 최근에는 대부분의 구성(서버, API)이 늘어나면서 모든 것을 중앙 집중화된 형태로 로깅/모니터링 환경을 구축해서 관리하는 것이 대부분입니다.

 

이 경우 리눅스 명렁어를 사용하는 것이 아니라 로킹/모니터링 환경에 수집된 데이터를 기반으로 어떤 문제인지 판단하는 역량이 필요합니다. 리눅스 명령의 옵션을 자세히 이해하는 것보단 리눅스 커널의 주요 개념에 대해서 이해하고 이 주요 개념과 관련된 수집된 데이터들의 변화를 추적하고 분석할 수 있는 능력이 중요합니다.

 

 

# References

1. 2023년 10대 전략 기술 동향 - 가트너(Gartner)

2. 가상머신 정의 - vmware

3. 컨테이너 정의 - IBM

4. 자동화 정의 - Redhat

5. 가상머신과 컨테이너의 차이