클라우드 컴퓨팅이란

컴퓨터 시스템 리소스를 필요시 바로 제공하는 것.

클라우드 컴퓨팅과 스토리지 솔루션들을 사용자와 기업들에게 데이터 저장, 가공 등의 기능 제공.

 클라우드 컴퓨팅은 전기망을 통한 전력망과 비슷한 일관성 및 규모의 경제를 달성하기 위해 자원의 공유에 의존.

 

클라우드 네이티브

❏  인프라 구축 초기부터 클라우드 환경을 고려하여 최적화된 환경과 기술스택 및 프로그래밍 언어 선정하여 개발환경을 구성하는 설계방법론.

❏  MSA, 도커(Docker), 쿠버네티스(Kubernetes) 등 클라우드 네이티브 환경 구축을 더 쉽게 도와주는 도구들 등장.

❏  CNCF(Cloud Native Computing Foundation)에서 제안하는 클라우드 네이티브 환경을 구성하는 구성요소

:  마이크로 소프트 아키텍쳐, 데브옵스적인 접근, 컨테이너 기반 인프라

 

IaC와 클라우드 네이티브

❏  클라우드 네이티브 환경을 구성하는 각 인프로 환경을 코드를 통해 손쉽게 관리 가능

❏  지속적인 CI/CD를 통해 마이크로 서비스의 장점 극대화

 

명령형(Imperative) 프로그래밍

❏  프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명.

❏  조금 더 쉽게 말해서 컴퓨터가 수행할 명령들을 순서대로 작성해 둔 것이라 생각.

❏  C, Java, Python과 같은 전통적인 프로그래밍 언어가 이 방식.

 

선언형(Declarative) 프로그래밍

❏ 구체적인 정보 로직을 작성하는 것이 아닌 어떤 목표를 명시하고 알고리즘을 명시하지 않는 것.

❏ a.config 파일의 3번째 줄의 메모리를 4기가에서 8기가로 늘린다라고 했을 때
:선언형 프로그래밍의 경우 a.config의 메모리 옵션(이거 코드 1줄), 8기가로 늘리겠다 (이거 코드 1줄)
두 줄의 코드만 작성하고 이것을 IaC 도구가 읽어서 원래 우리의 목표 달성하게 해주는 형태로 동작.

: 명령형 프로그래밍의 경우 파일 읽어오는 코드, 3번재 줄 찾는 코드, 메모리 늘리는 코드 모두 하나하나 작성.

 

❏  예를 들어 YAML, XML 파일 등에 진행할 작업을 지정하는 형태가 선언형 프로그래밍 방식의 예시.

명령형으로 작성 시 중간에 코드 알고리즘 잘못 작성해서 버그 발생 시 심각한 문제가 발생할 수 있는데,

❏ 선언형으로 작성 시에는 알고리즘을 포함하는 것이 아닌 “무엇을 하겠다”만 작성하기 때문에 중간에 잘못되어도 버그 발생 가능성이 적고 더 안전하게 인프라 다룰 수 있음.

 

클라우드 IaC도구

❏  각 클라우드 서비스별로 클라우드 IaC도구를 지원

:  AWS 클라우드포메이션(AWS CloudFormation)
: 구글 클라우드 배포 관리자(Google Cloud Deployment Manager)
: 마이크로소프트 애저 리소스 관리자(Microsoft Azure Resource Manager)

 

IaC 단계별 구동

초기 인프라 설정
: 어플리케이션 배포를 위한 머신 설정 및 OS 설치 과정 등이 필요.
ex) 4코어 CPU에 16GB RAM을 가진 머신에 Ubuntu 18.04 설치.

 

인프라 관리
: 머신을 어플리케이션 배포에 최적화된 환경으로 구성.

ex) 어플리케이션 배포 전에 필요한 JAVA8 설치.


: 어플리케이션이 구동되는 환경에 맞게 인프라를 관리해주어야 함.
ex) 미리 Python 설치, 사용하는 DB 종류에 맞게 미리 MySQL DB, Oracle 등등 설치하고 세팅 진행.

 

인프라 어플리케이션 배포
: 구성된 인프라에 실제로 서비스에 사용할 어플리케이션을 배포.
ex) 구성된 Ubuntu 18.04 머신에 영화 스트리밍 서비스를 위한 어플리케이션 배포.

 

:어플리케이션을 배포에 최적화된 구성으로 배포.
ex) JAVA 어플리케이션일 경우, 톰캣(Tomcat)을 이용해서 배포할 경우 톰캣을 미리 설치하고 배포를 위한 환경 구성을 진행.

 

VirtualBox

2009년 4월 20일 오라클이 썬 마이크로시스템즈를 인수하면서 현재 Oracle VM VirtualBox로 배포.
가상 환경을 만들어서 독립된 배포나 테스트 가능하게 하는 프로그램.

 

인프라 구성 실습 - 수동으로 VirtualBox에 Ubuntu VM 생성

1. VirtualBox 설치.

2. 크롬에다가 Ubunntu 18.04 검색해서 Bionic Beaver로 들어가서 Desktop image 다운로드 받아주기.
https://releases.ubuntu.com/18.04/ 

 

3. VirtualBox 실행시켜서 새로만들기 클릭 후 이름같은거 적절히 설정해주고 나머지는 default값으로 해서 가상환경 하나 만들기.

4. 왼쪽에 도구 밑으로 위의 이미지처럼 하나가 생성되면 클릭해서 설정 들어가서,
저장소 들어가서 컨트롤러 IDE 아래 디스트모양 누르고 2번에서 다운받은 iso파일 적용시켜주기.

5. ISO 파일이 연결 된 상태에서 시작을 눌러서 우리가 Ubuntu 18.04 리눅스 설치를 위한 vm을 띄워보기.
그럼 Ubuntu 18.04 OS를 를 빈 컴퓨터에 설치하는 과정이 진행이 되는 것이라고 한다.

6. 그러면 언어 설정 나오거 영어로 설정하고 나머지는 default값으로 해서 continue 하게 되면 Ubuntu 18.04 설치 과정이 진행이 된다.

 

7. 인프라 구성은 이렇게 하면 완료이고 여기서 우리 어플리케이션이 Java8 버전이 필요하다고 가정하고 Java8 설치해보기.
터미널 띄운다음에 "sudo apt-get install openjdk-8-jdk" 명령어 입력해주면 아래처럼 설치가 진행된다.

8. 잘 설치되었는지 "java-version"으로 한번 더 확인해주기.

 

'DevOps&Infra > Cloud Infra' 카테고리의 다른 글

Bootstrap IaC 툴 및 Vagrant 실습  (0) 2023.11.18
IaC(Infrastructure as Code) 개요  (0) 2023.11.04