본문 바로가기
개발공부 개발새발/etc

클라우드 교육 정리와 후기!

by 휴일이 2023. 7. 16.

 

다니는 코딩 스터디에서 가끔 교육을 해주시는데

이번엔 클라우드에 관한 강의를 해주신다고 해서 들었다

평소 aws 나 docker 등에 대해 관심히 많았는데

그쪽 얘기를 단 돈 5천원에 해주신다고 하니 놓칠 수 없지 !!

 

그래서 이 게시글은 내가 들은 강의를 정리한 것

 

 

 

-

 

1940년대 인류 최초의 컴퓨터 에니악 등장!

인류 최초의 컴퓨터는 전쟁 상황 중

포탄과 미사일 발사 각도를 빠르게 계산하기 위해 개발되었음

 

1970년대 최초의 인터넷 ARPANET 등장!

컴퓨터 간 상호 통신 및 작업이 가능해짐

군사적인 용도 외에 민간 사업 용도로도 활용해졌다!

이것이 3차 산업 혁명(띠용)

 

1990년대 제프 베조스, 온라인 책방 웹 서비스 AMAZON 창립

최초의 전자 상거래 서비스를 런칭했다

인류 최초의 인터넷 쇼핑몰이라고 볼 수 있겠당

 

2000년대 그리드 컴퓨팅 등장!

좋은 성능을 가진 서비스는 겁내 비싼 컴퓨터를 사야하잖아?

그 대신 부족한 컴퓨팅 자원을 극복하기 위해

다수의 컴퓨터들을 네트워크로 연결해서

고성능 컴퓨팅 파워를 내는 기술이다.

토렌트나 온디스크 등,, 다운받는 동시에 공유하는 그런 서비스를 예로 들 수 있겠다

(그래서 마니들 잡혀갔지..프루나로다가..)

 

2010년대 클라우드 컴퓨팅 등장!

클라우드는 두 가지의 의미를 가지는데

 

<클라우드 컴퓨팅>

데이터 센터, 그러니까 서버(물리)를 가상화해서 "관리가 필요 없는" 컴퓨팅 자원을 제공해주는 것

 

<클라우드 서비스>

인터넷을 통해 내 PC가 아닌 다른 컴퓨팅 자원을 활용한 서비스를 제공받는 것

 

한 마디로 뭐 클라우드 컴퓨팅은 기업이 해주는 거

클라우드 서비스는 개인 또는 기업이 받을 수 있는 거!

 

 

2016년 이후엔 AI(알파고) 등장,

인공지능 ai와 빅데이터, 사물 인터넷(IoT) 기술 발전이 가속화돼서

클라우드 컴퓨팅 기술은 엄~~~청나게 중요하게 되었다 이거야~~

 

 

 

 

인류 역사상 최초로 E-Commerce(전자 상거래) 서비스를 시행한 아마존.

Amazon의 웹서비스는 엄청난 인류 혁명이었고 인기가 겁내 많았다

그래서 폭발적인 주문을 감당하기 위해

수많은 컴퓨팅 서버를 구입하고 개발자들을 채용하는데....

 

 

한 편, 극한의 효율충이었던 아마존 CEO 제프 베조스

애플리케이션 엔지니어(개발자)들과 인프라 엔지니어(운영자)들이 회의하며 의견다툼하는 걸 보고 비효율적이라고 판단했다.

 

" 애플리케이션 엔지니어들은 애플리케이션 개발에만 집중하고

인프라 엔지니어들은 인프라 엔지니어링만 집중하면 생산성이 늘어날 거야! "

 

그래서 아마존은 IT 시스템 유지, 운영 자동화 기술 연구에 투자를 하게 되고..

기업들이 초고가의 서버 장비를 사고, 운영에 어려움을 겪고 있을 때

기업들의 IT 인프라 구축과 관리를 자동화해주는 기술을 싸게 팔면 돈이 되겠다 생각했다!!

그래서 오늘날의 AWS 를 탄생 시켰다

 

아마존 외에도

IBM -> Azure

Google -> Google Cloud Platform

클라우드 시장에 뛰어들어 운영 중이다

 

 

 

클라우드 서비스는

IaaS , PaaS , SaaS 로 나뉘는데

 

일반 기업들이
앱,미들웨어,운영체제,서버,저장소,네트워크를 전부 관리한다면

 

IaaS

<서버,저장소,네트워크>

- Azure

- AWS

- Google CloudPlatform

- openstack

 

PaaS

<운영체제,서버,저장소,네트워크>

- OpenShift

- RANCHER

- kubernetes

 

SaaS

<애플리케이션,미들웨어,운영체제,서버,저장소,네트워크>

전부 관리해주는 방식이다~

- Adobe (포토샵 등)

- Youtube

- Jira

 

 

그리고 On-Premise 는 Cloud 와는 다르게

자체 보유 전산실 서버에서 직접 클라우드 환경을 구축하고 활용하는 것을 말한다

 

 

 

AWS, Azure, Google Cloud 자격증은 모두 CSP 활용 자격증이고 따두면 좋다고 합니당~

 

 

 

 

클라우드 운영 모델은

"하드웨어가 어디에 있고, 어떻게 운영하는지"에 따라

Private , Public , Hybrid, Multi 로 나뉜다

 

 

 

Public

인터넷만 있으면 바로 사용 가능, 초기 자본 지출 없음

Public Cloud 공급 업체가 컴퓨팅 리소스를 소유하고 대신 운영해준다

프로비저닝 서비스 이용 가능

*사용자 요구에 맞게 시스템 자원을 할당, 배치, 배포하고 필요하면 즉시 사용할 수 있는 상태로 미리 준비해두는 것

사용한 항목에 대해서만 비용을 지불하면 된다. PC방 느낌이라고 보면 된당

- 인터넷을 통해 액세스 할 수 있는 가상 환경 내에 서버 임대 가능, 종량제(pay as you go) 방식의 요금 결제가 가능한 컴퓨팅 모델

- AWS , Azure, Google Cloudplatform

 

Private

초기에 하드웨어를 사야만 한다

On-Premise 데이터 센터에 장비를 구축하고, 전용 Private Cloud Service 를 구성한다

Private Cloud 를 운영하기 위해 직접 리소스와 보안을 완전히 제어하고, 하드웨어 장비도 직접 관리한다

항상 사설 네트워크로 유지 관리한다

- 기업의 사설 클라우드 컴퓨팅 모델

- IBM , Microsoft 에서도 프라이빗 클라우드를 할 수 있게 서비스를 제공하긴 함

 

Hybrid

Private <-> Public 등이 혼합된 컴퓨팅 모델인데, 상황에 따라 유연하게 제공한다

- 한 개 이상의 퍼블릭 및 프라이빗 클라우드 환경을 결합하고 서로 다른 클라우드 환경 데이터와 앱을 공유할 수 있는 클라우드 컴퓨팅 모델

 

Multi

두 개 이상의 CSP(Cloud Service Provider)를 활용하는 방식인데

비즈니스 요구에 가장 적합한 공급 업체를 선택 가능하다

여러 업체를 비교하고, 특정 IT 요구 사항에 맞게 최적의 가격을 선택해서 업체 종속을 방지한다

클라우드에서 로컬화된 구성 요소 장애로 인한 데이터 손실과 다운타임을 방지한다(데이터 유실을 방지한다고 보면 됨)

- 2개 이상의 퍼블릭 CSP 클라우드로 구성된 클라우드 컴퓨팅 모델

 

 

 

클라우드 컴퓨팅 기술은 컴퓨팅 리소스를 "가상화" 하는 기술인데

소프트웨어는 물론, 하드웨어도 가상화가 가능하다!

 

 

하드웨어 가상화를 Virtual Machine 이라고 한다(자바 버츄얼 머신이 생각나는군)

버츄얼 머신은 컴퓨터 OS 위에 다른 OS 를 돌리는 걸 말한다.

컴퓨터에서 블루스택을 다운받아서 안드로이드 게임을 돌리는 거라고 보면 된다

컴퓨터 안에서 컴퓨터가 구동되는 것이라고 보면 되지!

 

Virtual Machine은 Hypervisor 을 통해 생성되는데

 

Hypervisor 이란?

Virtual Machine 을 생성할 수 있게 해주는 Software.

Host OS (하드웨어 바로 위에서 동작하는 OS) 위에 Hypervisor을 올리고

그 위에 Guest OS(Hypervisor위에서 동작하는 OS) , 즉 Virtual Machine 을 올리면 된다

 

 

Host OS 위에도 Hypervisor을 올리는 것을 Type-2 가상화라고 한다

대표 서비스

- VirtualBox

- vm ware

 

Hardware 위의 Hypervisor은 Type-1 가상화인데

하드웨어 위에 OS 를 바로 올리는 게 아니라

 

VirtualMachine

Hypervisor

Hardware

이렇게 하드웨어 위에 바로 Hypervisor 을 올리는 걸 말한다

대표적인 서비스는

- Xen

- KVM

 

Type-1 가상화는 여러개의 Bare Metal(하드 위에 아무런 소프트웨어가 설치되지 않은 상태)를 묶어서 가상화하는데

이건 물리적인 컴퓨터들이 모여있는 걸 얘기한다(가상 컴퓨터가 아님)

 

 

버츄얼머신

Xen

컴퓨터 여러대..

머 이런 거임

 

 

Openstack 이란, 오픈 소스 가상화 기술인데

Virtual Machine 뿐만 아니라 Storage 등도 가상화한다

 

VirtualMachine (window, ubuntu, storage ...)

openstack (open source)

BareMetal (실물 컴퓨터들)

 

 

 

Container !

"애플리케이션 및 구동 환경을 신속하고 안전하게 격리하고 포장하여 운반하는 기술"

 

그냥 컨테이너에 환경을 다 구축해놓기만 하면

여러 컴퓨터가 똑같은 환경에서 시스템을 사용 가능한 뭐 그런 거다

 

클라우드 컴퓨팅에서 컨테이너 도구 중 가장 유명한 것은 역시

docker 라고 볼 수 있겠다

귀여운 고래 그림이 있어서 아이콘이 넘넘 귀엽다(난 고래가 참 조아~~)

 

 

Docker 는 간단하게

설치한 뒤

Dockerfile 작성한 뒤 Docker image 를 build

Docker image 로 컨테이너를 구동하면 된다

 

 

도커는 깃허브처럼 도커 허브 사이트가 있어서

개인 PC에서 도커 이미지를 자유롭게 다운, 업로드 할 수 있다

그러면 개인 PC에서 그걸 다운받아서 환경을 구축하고 애플리케이션을 구동할 수 있는 것!

 

 

 

개발하고 AWS 배포했을 때 어려웠던 점 중 하나가

환경이 달라서 구동이 안 되는 부분들이 있어서 진짜 짜증났는데

 

docker 를 이용하면?

개발/테스트/운영 환경을 동일하게 맞출 수 있어서

환경에 구애받지 않고 개발이 가능하다!! 와우!!

 

 

그래서 요즘 나오는 DevOps 란

Developer + Operator 결합 단어로

배포와 운영을 동시에 하는 뭐 배포 자동화하고 관리하는 그런 직업~~이다

직접 개발은 안 하지만 아주아주 멋진 일을 하시는 분들이다

네트워크 공부를 아주 마니 하신다고 한다(멋졍)

 

 

 

그리고 컨테이너를 사용하다보면

1~3대 정도 되는 서버에서 배포하고 운용할 때는

docker compose , docker swarm 같은 컨테이너 관리 프로그램을 이용하면 되지만

 

대규모 트래픽이 발생하는 애플리케이션이나

몇 백 대 이상의 실제 운영 서버라면

kubernetes 라는 툴을 사용한다

 

kubernetes ?

" 여러 개의 서버들을 클러스터링 해서 애플리케이션 컨테이너를 배포, 스케일링, 장애 복구 기능을 자동화해주는 컨테이너 관리 도구 "

 

근데 강의하시는 분이 말씀하시기를

쿠버네티스는 정말 기능이 많고 유용한 툴이지만 그만큼 어려워서

이걸 사용하려면 관련 개발자들이 전부 쿠버네티스를 배워야 유용하게 사용가능하다고 하셨다

그래서 쿠버네티스를 개발자들 전부가 공부할 여건이 되면 쿠버네티스를 사용하는데

그게 아니라면 그냥 도커 컴포즈나 도커 스웜을 사용하는 것도 괜찮다고 했음

상황에따라 다르다고~

 

 

이제는 개발자들도 개발만 하는 것이 아니라 클라우드에 대해서 어느 정도 알아야하는 시대가 왔기 때문에

클라우드 개발자까진 아니더라도 Docker 와 Kubernetes 를 알아두고 공부해두면 좋다고 하셨다!^_^

 

진~~짜 재밌었음 ㅋㅋㅋㅋ

도커 관련 책도 추천받고 처음에 어떤 식으로 도전하면 좋을지도 추천받아서

내 애플리케이션을 컨테이너화해보는 걸 시작해봐야겠다~~^____^ 꺄오~~~잼겠당~~ㅎㅎㅎ

새로운 거 배우고 적용해볼 생각하니까 가슴이 마구 두근두근함 ㅋㅋㅋ 난 공부체질인가 역시..?

728x90