클라우드 마이그레이션에 대한 정리 (개방형 클라우드 플랫폼 테크 엣지 세미나)

 IT / DX 에 대해서 공부하는 것을

블로그에 기록해 볼려고 한다 . ㅎ .. ㅎ

내가 정리한게 틀린거라면

이 블로그를 보는 누군가가 알려주기도 하고,

내 글이

남들에게 도움이 될 수도 있을거란 생각이 급 들어서다


23.12.28 (목)

온오프믹스 닷컴에서 신청했던 클라우드 관련된 세미나를 오늘 들었다.

(아래 사진 참고)

강의 시간은 총 22분정도 걸렸고,

상세하게 알려주기보다는 이런 방법이 있다~ 정도만 알려줘서

나에겐 좀 어려운 세미나였다

강의에서 배운 것 보다

강의 PPT를 기반으로

인터넷 서칭하며 마이그레이션 방법과 도커 컨테이너 기술에 대해서 알게된게 더 크다


세미나 내용 :

K-PaaS 어플리케이션 플랫폼에 배포된

사용자 앱을 컨테이너 플랫폼으로 마이그레이션하는 방법

  1. 운영자 측면에서 마이그레이션 하는 방법 (2가지)

  2. 개발자 측면에서 마이그레이션 하는 방법 (3가지)


세미나 내용 정리가 아니라,

세미나를 듣고

추가로 공부하며 알게된 거를 정리한 글입니당

( 저는,, 클라우드 전문가가 아니라

배워가는 사람이라서 틀린 내용이 있을 수 있으니

틀린 부분은 언제든지 편하게 알려주세오)

클라우드 마이그레이션 유형

마이그레이션 = 전환

클라우드 마이그레이션하면

온프레미스에서 클라우드로 전환하는 것만 해당되는 줄 알았는데,

이 뿐만 아니라

A 클라우드 플랫폼 → B 클라우드 플랫폼

데이터센터 (프라이빗 클라우드) → 퍼블릿 클라우드 or 하이브리드 클라우드

앱 → 클라우드 네이티브 앱

오프라인 네트워크 장비, DB 등 → 클라우드

등등등등등

다양한 유형이 있다.

각각의 유형에 따라 다른 마이그레이션 방법이 있겠지만,

오늘 들은 세미나에서는

개방형 클라우드 플랫폼(K-PaaS) 애플리케이션 플랫폼 → 컨테이너 플랫폼

으로 전환하는 방법에 대해서 배웠다.

클라우드 마이그레이션 이점

마이그레이션을 왜 해야하는가?를 생각했을때,

그 답은

클라우드가 가지는 이점과 동일하다

비용 절감, 스케일 인아웃 용이 등등~

클라우드 마이그레이션 방법/전략

내가 정리한 것보다 더 많지만,

중요한것만 써봄

1. 리호스팅 Rehosting (Lift and Shift)

기존의 온프레미스에 있는 코드를 수정 없이

클라우드 환경에서 복붙해 사용

(장점) 빠르게 마이그레이션 가능

(단점) 클라우드 네이티브화가 되지 않아, 클라우드의 이점을 활용하는데 한계가 있음

2. 리팩토링 / 리아키텍팅 (Refactoring or Rearchitecting)

클라우드 맞춤을 위해 기존 코드의 대부분(일부~전체)을 바꾸는 방법

(클라우드 네이티브화)

클라우드 중심 기능을 최대한 활용하도록 앱을 재설계함

기업에서는 애플리케이션의 기존 환경에서는 실현하기 어려운 기능을 추가하거나, 확장하거나, 성능을 향상해야 할 때 이 접근 방식을 선택하는 경우가 많음

모놀리식 아키텍처를 마이크로 서비스 아키텍처(MSA)로 분해하거나,

기존 모듈을 완전관리형 클라우드 서비스로 대체할 수 있음

3. 리플래포밍 Replatforming

코드 살짝 수정해서 클라우드로 올리는 것

리호스팅(수정X)과 리팩터링(ALL 수정)의 중간 접근 방식입니다.

클라우드 기능을 활용하기 위해 앱 일부만 최적화해서 리팩터링만큼 광범위하지는 않음

고급 기능을 제공하는 클라우드 기반 서비스로 특정 구성 요소를 이전

4. 재구매

기존 SW 버리고, 클라우드 기반 제품으로 이전

일반적으로 애플리케이션의 기존 소프트웨어 라이선스를 포기하거나 교체

클라우드 중심 애플리케이션을 구매하고 기존 애플리케이션을 사용 중지하기로 결정하는 것

ex) 데이터 센터의 기존 가상 데스크톱 인프라(VDI)에서 완전관리형 클라우드 기반 VDI로 이전

5. 유지 Retain

온프레미스 형태로 쓰던 그대로 냅두는 것

특정 애플리케이션 또는 서비스를 현재 환경에서 유지하면서

클라우드를 다른 용도로 사용하는 것을 의미함

쿠버네티스 기반 마이그레이션

클라우드 네이티브

쿠버네티스 기반의 어플리케이션 배포 과정이다

이걸 보고,

왜 코드를 이미지로 빌드를 하는거지?

이미지 저장소는 뭐고 ,,?

이미지랑 어플리케이션 배포 관계는 뭐지 ?

CI / CD는 뭐지 ?

라는 생각을 하면서, 찾아보니

쿠버네티스에 대해서 더 알게된 것 같다.

  1. Docker 이미지???

도커 이미지는 일반적인 사진, 그림이 아니라

앱과 그 실행환경을 포함하는 가상화된 패키지이다.

도커 이미지는 쿠버네티스 클러스터 내에서 컨테이너로 실행됨

2. 프로그램 소스 코드를 이미지로 패키징 ??

도커 컨테이너화 할려면은 소스를 이미지로 만들어서 저장해야 함 (패키징)

이미지로 빌드하는게 앱을 도커 컨테이너로 실행할 수 있도록 하는 과정이다

프로그램 소스 + 런타임 + 파일시스템 + 시스템 도구 + 라이브러리 등

앱이 실행하기 위한 모든 것을 한 세트로 묶어 두는것

도커는 이런 특징을 가지고 있어서,시스템과 독립된 환경에서 실행 가능함

따라서, 아래의 말이 성립함

(= 앱 환경과 종속성을 컨테이너 이미지에 캡슐화)

(= 도커 이미지로 패키징하면, 도커의 가상화 기술을 통해 환경의 일관성을 유지하고,

애플리케이션을 여러 환경에서 무리없이 실행할 수 있게 됩니다.)

(= 이 이미지를 사용하여 CI/CD 파이프라인에서 애플리케이션을 테스트하고 배포하는데 활용할 수 있습니다.)

3. 도커 이미지는 어떤 과정을 거쳐 만들어지고 배포되는가 ?

  1. 도커 파일 작성 (dockerfile)

dockerfile은 파일 루트 디렉토리에 위치 (최상위란 뜻)

도커 이미지를 빌드할 때 필요한 명령어와 설정이 포함

2. 도커 이미지 빌드

(첫번째, 도커 파일작성 과정인) dockerfile에 빌드를 위해 필요한 코드를 주루룩 쓰고

docker build 명령어를 사용하여 이미지를 빌드하면

도커 이미지가 생성 ~

(= dockerfile 을 기반으로 도커 이미지를 빌드함)

3. 도커 이미지 저장소(레지스트리) 등록

이미지를 저장하고, 관리, 배포하는 중앙 관리사무소 느낌스

4. 도커 이미지 배포

Kubernetes 클러스터, 도커 스웜, 또는 다른 컨테이너 오케스트레이션 툴을 사용하여

배포 가능

4. 클라우드 기반의 CI / CD 파이프라인 ??

SW개발 프로세스를 자동화하고 지속적으로 통합과 배포를 수행하는 방법

  • CI (Continuous Integration - 지속적 통합)

CI는 개발자가 작성한 프로그램 코드를 합치고 빌드한 뒤,

자동으로 (코드 측면에서) 테스트를 실행함

for 여러 개발자가 작성하더라도 충돌 방지

"코드"에 초점이 맞춰져서, 코드가 충돌 없이 잘 업뎃됐는지, 잘 돌아가는지 테스트

  • CD

CD는 CI를 거쳐 넘어온 SW 코드를 (앱 측면에서) 테스트하고 배포

앱 전체를 테스트하고 "배포"하는것에 초점

CD는 2종류가 있다. (Continuous Delivery, Continuous Deployment )

조직, 서비스의 성격에 맞춰서 택1해서 활용됨

1. Continuous Delivery 지속적 전달

수동으로 프로덕션 배포 결정이 이루어지지만,

앱 측면에서 성능, 작동, 보안성 등을 테스트하고 스테이징 환경으로 자동 전달.

프로덕션 환경까지 자동으로 배포하지는 않음

신중하게 배포할때 사용

2. Continuous Deployment 지속적 배포

자동으로 프로덕션까지 배포됩니다.

테스트, 스테이징 환경으로 전달, 실제 사용자가 사용하는 프로덕션 환경까지 자동으로 배포

신속하게 릴리스를 해야하는 조직, 서비스에 사용



쓰다보니까 너무 길어져서

포스팅 2개를 쓸려고한다

이글은 클라우드 마이그레이션 세미나를 듣고

찾아보면서 알게된 마이그레이션과 쿠버네티스에 관해 정리했고,

다음글은 개방형 클라우드 플랫폼 테크 엣지 세미나에서

강의하신

사용자 앱을 컨테이너 플랫포믕로 전환하는 방법에 대해 정리하겠음

댓글

이 블로그의 인기 게시물

KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계

KT 에이블스쿨 : 핀테크 아이디어 공모전

쿠팡 제품