seunghyun Note

Docker & Container , SaaS 본문

workspace/클라우드 컴퓨팅 & 가상화

Docker & Container , SaaS

승숭슝현 2024. 5. 11. 21:09
728x90
반응형

회사에서 앞으로 클라우드 기반으로 앱을 바꿀 계획이 있는 거 같다. 클라우드 관련 자격증은 한 개 있지만.. 한 번도 응용을 하거나 사용해 본 적이 없다. 또한 조만간 클라우드 관련 세미나를 회사에서 진행할 거 같고 클라우드 개발에 관심을 갖는다면 미래에 도움이 많이 될 거 같아서 교육 듣고 공부하는 SaaS(소프트웨어 서비스 제공 모델)를 정리해 보고 더 나아가 docker, kubernetes,aws EC2, google Cloud를 정리해 보자. 나중에 더 나아가서 SaaS로 회사 서비스를 구동해 보자.

"일단 오늘은 Docker & Container, SaaS의 개념을 정리해 보자!"

도커 : 화물선 , 컨테이너 : 화물 박스

Docker & Container

도커라는 개념은 정말 여러 번 보니까 조금씩 정리되는 거 같다. 또한 컨테이너라는 개념을 알아야 도커라는 개념을 이해할 수 있는 거 같다.
도커컨테이너를 이해하기 위해 실생활에서의 비유를 해봐야 이해가 되는 거 같다. 도커컨테이너를 운반하는 화물선과 같다. 컨테이너화물선에 실리는 표준화된 화물 박스와 같다.
도커(화물선) : 도커는 소프트웨어 개발에서 사용되는 도구로 우리가 애플리케이션과 그 애플리케이션이 실행되는 필요한 모든 것을 컨테이너라고 불리는 표준화된 단위로 포장하며, 다양한 컴퓨터 환경에서도 동일하게 작동하도록 해준다. 즉 화물선(도커)은 화물(애플리케이션과 그 실행 환경, 우리가 만든 서비스)을 목적지(다른 컴퓨터나 서버)까지 운송하는 역할을 한다.
컨테이너(화물 박스): 컨테이너는 애플리케이션과 그 애플리케이션이 실행되는데 필요한 라이브러리, 시스템 도구, 코드 등을 포함하는 소프트웨어 패키지이다. 실생활에서의 화물 박스와 같이, 컨테이너는 어디에서나 동일하게 '화물'을 운반할 수 있도록 표준화되어 있다. 컨테이너를 사용하면 개발자는 "내 컴퓨터에서는 잘 작동하는데, 다른 곳에서는 왜 안 되지?"라는 문제를 피할 수 있다. 왜냐하면 컨테이너 안에는 애플리케이션이 실행되는데 필요한 모든 것이 포함되어 있기 때문이다.

내가 가장 좋아하는 버거킹을 운영한다고 가정해 보자. 버거킹에서 매일 같은 맛의 와퍼를 제공하기 위해서는 패티, 빵, 그릴, 콜라 등이 필요하다. 이제 내가 장사가 잘 돼서 버거킹을 여러 지역에 분점을 낼 계획이다. 각 지역의 분점에서도 동일한 맛의 와퍼를 제공하기 위해, 각 분점에 정확히 같은 조건의 와퍼 제조 세트를 배치해야 한다. 이때, 각 와퍼 제조 세트를 컨테이너(Container)로 생각할 수 있고, 이 컨테이너들을 각 분점으로 운송해 주는 역할을 도커(Docker)가 한다고 생각할 수 있다. 결과적으로, 어느 분점에서든지 동일한 맛의 와퍼를 제공할 수 있게 된다. 

"오늘도 와퍼를 먹었지만 또 와퍼를 먹고 싶다."

즉, Docker와 컨테이너를 사용함으로써, 개발자는 애플리케이션을 어디서나 동일하게 실행할 수 있는 환경을 만들 수 있다.
컴퓨터에서 다양한 프로그램이나 애플리케이션을 실행하고 싶을 때, 그것들이 잘 돌아가기 위해서는 각자 필요한 환경이 있다. 이 환경을 마련해 주는 방법 중에는 버추얼 머신(VM)컨테이너가 있다.
버추얼 머신(VM) : 버추얼 머신은 마치 집을 전체적으로 빌려 살면서, 그 안에서 필요한 가구부터 전자제품까지 모두 갖추는 것과 비슷하다. 현재 나는 회사에서는 윈도우 컴퓨터를 사용하고 있다. 근데 지금은 카페에서 맥북을 사용하고 있다. 만약 내가 맥북에서만 돌아가는 프로그램을 실행하고 싶다면?, VM을 통해 가상의 MacOS 를 Windows 안에서 별도로 만들어 그 안에서 프로그램을 실행할 수 있다.
하지만 이 방식은 집 전체를 빌리는 것처럼 많은 자원을 사용하기 때문에 무겁고 느릴 수도 있다.
컨테이너(Docker) : 와퍼 제조 세트 같은 컨테이너는 필요한 세트만 빌려 쓰는 것과 유사하다. 버거킹 건물 자체(컴퓨터의 운영체제)는 이미 있고, 우리는 와퍼 제조 세트 중 그릴 굽는 세트(컨테이너)만 사용하는 것이다. 그릴 굽는 세트는 우리가 필요로 하는 최소한의 기계와 용품만 있으며, 그래서 훨씬 가볍고 빠르게 움직일 수 있다. Docker는 이런 컨테이너를 쉽게 만들고 관리할 수 있게 해주는 도구 중 하나이다. 컨테이너는 필요한 프로그램과 그 실행 환경만을 포함하기 때문에, 다양한 운영체제에서도 문제없이 실행할 수 있다.
그래서 Docker는 VM보다 더 "light-weight" 한 컨테이너의 한 종류로 Linux, MacOS, Windows 등 다양한 OS를 지원해 준다. 
옵션적으로 Windows는 WSL2를 통해 지원해준다고 한다. 

"WSL2..... 이것은 무엇인가??? 넌 뭐냐!!"

WSL2(Windows Subsystem For Linux) :WSL2는 윈도우 컴퓨터에서 리눅스 운영체제를 가볍게 실행할 수 있게 해주는 기능이다. 
마치 윈도우 안에 작은 리눅스 방을 만들어주는 것과 같아서 윈도우를 쓰면서 리눅스 환경에서 작업할 수 있다. 이는 컨테이너처럼 가볍지만 실제 리눅스 커널을 사용하기 때문에 리눅스를 거의 완벽하게 경험할 수 있다.
요약하면....
VM은 집 전체를 빌리는 것처럼 무겁고 완전한 환경을 제공하는 반면, 컨테이너는 필요한 방만 빌려 쓰는 것처럼 가볍고 효율적이다. WSL2는 윈도우에서 리눅스를 가볍게 즐길 수 있는 특별한 방법이다.

전체를 다 가져오는 MV 와 특정 기능만 가져오는 Containers

Saas(Software as a Service, 서비스로서의 소프트웨어)

"SaaS 너는 그래서 뭔데?!"

며칠 전에 SaaS 뿐만 아니라 IaaS, PaaS를 공부했지만 완벽하게 이해하기 어려웠다. 다시 정리해 보자.

https://cojjangsh.tistory.com/162

 

(                ) as a service [클라우드 컴퓨팅 서비스]

클라우드 컴퓨팅은 Google, Microsoft, Dropbox, IBM 등 기술 분야 최대 기업이 주도하면서 시장에서 성장한 기술이다. 많은 양의 정보를 다루는 조직에는 데이터에 대한 더 높은 신뢰성과 보안이 필요하

cojjangsh.tistory.com

친해지자 SaaS

SaaS : 일상생활에서 다양하게 접할 수 있는 서비스를 인터넷을 통해 제공되는 소프트웨어 서비스다. 사용자는 소프트웨어를 직접 구매하고 설치할 필요 없이, 웹 브라우저를 통해 언제 어디서나 해당 소프트웨어를 사용할 수 있다. Saas는 일종의 "렌탈" 서비스와 비슷한데 사용자는 필요한 소프트웨어를 "임대"하여 사용하고 사용량에 따라 비용을 지불하게 된다. 
이메일 서비스(Gmail, Outlook), 문서 작성 및 협업 도구(Google Docs, Microsoft 365), 사진 편집 도구(Adobe Photoshop Lightroom) 등이 있다. 우리 회사가 이와 같은 Saas 프로그램을 만들 수 있을까..? 그랬으면 좋겠다.
이러한 서비스들은 모두 인터넷을 통해 소프트웨어를 '사용'하는 형태로, 별도의 설치 없이 웹 브라우저나 앱을 통해 접근할 수 있다.
SaaS의 장점

  1. 설치 불필요 : 복잡한 설치 과정 없이 서비스에 접속하여 바로 사용할 수 있다. Google Docs를 사용하기 위해 우리는 따로 설치하지 않는다(요즘은 자체 앱이 있긴 함). 인터넷 연결이 가능한 브라우저만 있으면 된다
  2. 장소에 구애받지 않는 접근성 : 인터넷이 연결된 어디서나 서비스를 이용 가능. 회사, 공차, 버거킹, 스마트폰 등 다양한 기기에서 동일한 서비스를 이용
  3. 최신 버전 사용 : Saas 제공 업체는 서비스를 지속적으로 업데이트하며, 사용자는 항상 최신 버전의 소프트웨어를 사용할 수 있다.

식상한 장점들이다...
일단 여기까지 Docker, Container, SaaS의 정리이다. 다음 포스팅은  AWS, Google Cloud 등 클라우드 컴퓨딩을 이용한 서비스를 이용해 Docker를 사용해 보고 더 나아가 쿠버네티스까지 정리해 봐야겠다.
 

클라우드 고수가 되는 그날까지... ㅎㅇㅌ

ㅎㅇㅌ

 

728x90
반응형

'workspace > 클라우드 컴퓨팅 & 가상화' 카테고리의 다른 글

Dockerfile 개념 및 사용법  (0) 2024.05.14
Docker Image 관리  (0) 2024.05.13
Make a site with a docker  (0) 2024.05.11
AWS EC2  (0) 2024.05.11
( ) as a service [클라우드 컴퓨팅 서비스]  (1) 2024.04.22