✔ Cloud
On-Premise
- 기업이 자체 데이터 및 솔루션을 저장하기 위해서 데이터 센터를 구축해서 IT 서비스를 수행하는 방식
- 하드웨어를 포함한 모든 자원에 대한 초기 투자 비요오가 탄력적이지 않은 제한된 용량으로 인해, 지속적 관리 비용이 증가하는 단점이 있지만, 기업에 내재화된 서비스를 통해 품질 및 보안에 대한 신뢰도는 높다.
초기 투자 비용은 On-Premise가 높지만, 오래 사용한다면 On-Premise가 이득
- On-Premise는 설계할 때, 자원 사용량을 최대로 설계
Cloud Computing
- 컴퓨터와 소프트웨어를 자신이 소유하는 것이 아니라, 네트워크를 통해 클라우드 사업자의 컴퓨터와 소프트웨어를 서비스로서 사용하는 것
- IT 자산을 소유하는 것이 아니라 서비스로 이용하는 모델
- 사용자는 네트워크와 인터넷 그리고 자원이 어디에 있는지 몰라도 됩니다.
- 이를 Transparency(투명성) 이라고 합니다.
클라우드 등장하기 까지의 흐름
- 메인 프레임
- 클라이언트 - 서버 컴퓨팅
- 서버가 여러 개 일 수 있음
- 네트워크 컴퓨팅 - 그리드 컴퓨팅
- 작업을 나누어서 처리한다
- 클라우드
보급된 배경
정의
- NIST(미국 국립 표준 기술 연구소)의 정의
- 공유 구성이 가능한 컴퓨팅 리소스의 통합을 통해 어디서나 간편하게 요청에 따라 네트워크를 통해 접근하는 것을 가능하게 하는 모델
특징
- 주문형 셀프 서비스
- 사업자와 직접 상호 작용하지 않고, 사용자의 개별 관리 화면을 통해 서비스를 이용할 수 있음
- 광범위한 네트워크 접속
- 모바일 기기 등의 다양한 디바이스를 통해 서비스에 접속할 수 있음
- 리소스 공유(자원 공유)
- 신속한 확장성
Scale UP(중요한 용어이다.)
- 처리 능력을 높이는 것
Scale down
- 처리 능력을 낮추는 것
- 측정 가능한 서비스
장점
- 경제성
- 자동화 : 업데이트, 보안 패치, 백업 등
- 이동성 : 웹을 이용할 수 있는 모든 장치에서 사용 가능
- 리소스 공유
- 가용성
- AWS 경우 기본적으로 99.99% 이상의 가용성을 제공
- 빠른 구축 속도
- 확장성
- Scale Up : 하드웨어 자체 성능 업그레이드
- Scale Out : 동일한 컴퓨터를 추가하는 것
- 트래픽이 늘어났을 때, up out 중 어떤 방법을 사용할 것이냐
- 중복성(탄력성)
- Business Continuity Management(BCM)
- AWS 글로벌 인프라
단점
- Internet Access
- Security
- Privacy
- Vendor Lock On
클라우드와 On-Premise
- 비용의 문제
- On-Premise :초기 투자 비용이 많이 발생, 추가적인 관리 비용 발생
- Cloud : 초기 투자 비용은 없음
- 5년 정도 동일 시스템 사용하면 5년 뒤에는 On-Premise가 비용 절감 효과
- 확장성 비교
- On-premise : 자사 시스템의 개별 요구 사항에 따라 설계, 시스템의 도입과 확장에는 고도의 기술력을 갖춘 인재가 필요함
- Cloud : 클라우드 사업자가 설계 및 구축, 중소 기업이 대기업에 필적하는 규모의 서비스를 이용할 수 있음
- 안정성과 신뢰성
- Cloud Risk : IaaS의 리스크로는 클라우드 사업자의 하드웨어 장애로 인한 데이터 손실이나 서비스 중단 등의 문제 발생 할 수 있음, 가상서버를 백업하거나 쉽게 가상 서버 환경을 구축하기 위한 템플릿을 마련하는 것이 대책이다.
- IaC 인프라를 코드로 올려버려
- 클라우드의 보안 거버넌스
- 기업 사용자는 자사가 보유한 정보의 관리와 처리르 클라우드 사업자에게 맡겨 버리기 때문에, 보안 등의 리스크를 통제할 수 없다는 문제가 발생합니다.
- 클라우드 보안 거버넌스(Governance - 기업의 경영진이 클라우드를 이용할 때의 위험을 주체적이고 적절하게 관리하기 위한 구조를 구축하고 운용하는 것)의 관점에서 바라보면, 클라우드 서비스의 Incident와 서비스 복구와 같은 사항들은 제어가 어렵고 클라우드 사업자의 갑작스러운 파산이나 서비스 중단과 같은 서비스의 연속성 리스크 또한 존재합니다.
- 대부분 알려진 클라우드를 사용하고, 멀티 클라우드 형태를 취하게 됩니다.
- 사업자 및 이용자 측에 잠재된 보안 위험 요소를 확인해두고, 클라우드 사업자와 이용자 사이의 책임 분계선 등 이용자가 관리할 수 있는 범위를 파악한 뒤 보안 대책과 백업을 마련할 필요가 있다.
| SaaS | Paas | Iaas |
---|
| 유형(기준) 없음 / 배치 불가능 | static | |
| 요소 자신을 기준으로 배치 | | |
OS | 사업자 책임 | 사업자 책임 | 사용자 책임 |
하드웨어 | 사업자 책임 | 사업자 책임 | 사업자 책임 |
클라우드 서비스 종류
직접 구축 | SaaS | Paas | Iaas |
---|
애플리케이션 | 애플리케이션 | 애플리케이션 | 제공 |
데이터 | 데이터 | 데이터 | 제공 |
런타임 | 런타임 | 제공 | 제공 |
미들웨어 | 런타임 | 제공 | 제공 |
OS | OS | 제공 | 제공 |
가상화 | 제공 | 제공 | 제공 |
서버 | 제공 | 제공 | 제공 |
스토리지 | 제공 | 제공 | 제공 |
네트워킹 | 제공 | 제공 | 제공 |
IaaS (Infrastructure as a Service)
- 사용자에게 인프라 자원을 사용할 수 있도록 해주는 클라우드 서비스
- 컴퓨터를 빌려주는 개념
- 가장 대표적인 서비스가 AWS의 EC2(Elastic Compute Cloud)
- 모든 CSP 사업자는 이 서비스를 Public으로 제공을 한다.
- 서비스 개발자가 애플리케이션 개발, 실행, 관리 등을 할 수 있도록 안정적인 플랫폼 또는 프레임워크를 제공하는 클라우드 서비스 방식
- 원하는 SW를 직접 개발해서 사용하기 때문에, SaaS보다 자유도가 높지만, 다른 환경으로의 마이그레이션이 어려울 수 있습니다.
- 세일스포스의 Force.com, 사이보우즈의 Kintone, Cloud Foundary, GCP(Google Cloud Platform), ServiceNow, Oracle DBMS on Cloud(OCI)등..
- 개발도구 : SDK, 프레임워크(Ruby on Rails, Spring, Node.js, Eclipse등)
- 핵심 기능 : 프로그래밍 언어(Ruby, Java, Python, PHP 등), Application Server(Apache Tomcat, Jboss 등), 데이터베이스(MySQL, PostgreSQL, MongoDB, Amazon RDS, Oracle, MS SQL Server 등), 메시지 미들웨어(RabbitMQ, Amazon SQS, kafka 등), 애플리케이션 통합, 비지니스 프로세스 관리, 데이터 통합, 관리 파일 전송, 보안, 테스트 환경 등... 제공
SaaS (Service as a Service)
- 사용자가 필요한 소프트웨어를 제공하는 서비스
- 하나의 서버를 여러 기업에서 공유하는 것을 전제로 한 멀티 터넌트 서비스를 제공하지만, 데이터는 기업 사용자 별로 분리되도록 설계해서 보안성을 확보합니다.
- 전자 메일이나 그룹웨어, CRM 서비스 등을 들 수 있다.
- 대표적인 서비스로는 Google Apps, Salesforce, MS Office 365, Naver Office 등...
DaaS (Desktop as a Service)
- 데스크톱을 빌려주는 서비스
- SaaS와 IaaS의 결합
- 구분이 어려움
클라우드 이용 모델
- public cloud
- 클라우드 서비스 공급자 (AWS, GCP, Azure, Oracle, Naver 등)가 시스템을 구축하고 인터넷 망 등의 네트워크를 통해서 불특정 다수의 기업과 개인에게 서비스를 제공하는 형태
- private cloud
- 폐쇄적인 구조
- 특정 기업의 특정 사용자 만을 대상으로 하는 클라우드 서비스
- 자사가 보유하고 운용하는 형태로 만들 수 있고(On Premise Private Cloud) 클라우드 사업자가 장비를 보유하고 프라이빗 클라우드 서비스를 제공하는 형태(Hosted Privated Cloud)로 구축
- Community Cloud
- 공통의 목적을 가진 특정 기업들이 클라우드 시스템을 구축
- Hybrid Cloud
- Private Cloud와 Public Cloud를 조합하는 방식
- 기업 내부의 민감하고 중요한 데이터 처리 작업은 통제력을 강화하기 위해서 Private Cloud를 사용하고, 일반 업무 데이터 처리와 같이 보안 요구 사항이 낮거나 워크로드가 지속적으로 증가하는 작업 또는 애플리케이션을 여러 곳에 배포해야 하는 작업은 Public Cloud로 구성
가상화
- 클라우드를 지탱하는 2대 기술 중 하나
- 컴퓨터의 물리적인 메모리와 하드 디스크, 운영체제 등 다양한 것들을 소프트웨어로 대체하는 기술
- 물리적인 컴퓨터 1개를 가지고 여러 개의 논리적인 컴퓨터를 만드는 기술
- 복제가 쉽고 대수를 늘리거나 줄이는 것도 쉬워집니다.
분산 처리와 로드 밸런서
- 분산 처리는 여러 대에 나누어서 처리하는 기술
- 여러 대에 분배하는 장치를 Load Balancer라고 합니다.
이중화
- 시스템이나 서버에 문제가 생겨도 계속 가동할 수 있도록 조치를 하는 것
Cloud Native
개요
- 동적인 환경(클라우드 환경)에서 확장 가능한 애플리케이션을 개발하고 실행할 수 있도록 해주는 기술
- Container, Service Mesh, Microservice, Immutable Infra, Declarative API 등
- 회복성, 관리 편의성, 가시성을 갖추는 느슨한 결합(Loosly Coupling)을 가진 시스템
- 벤더 중립적인 오픈 소스 프로젝트 생태계
Pillas of Cloud Native
- DevOps
- Micrservices
- Containers
- Continuous Delivery
DevOps
- IT 서비스 설계, SW 개발, 릴리즈 및 운영에 이르기까지 전체 서비스 수명 주기에 함께 참여하는 IT 서비스 운영 및 개발 엔지니어의 업무 방식
Plan->Code->Build->Test->Release->Deploy->Operate->Monitor
반복
CD
- DevOps의 자동화 부문의 기원
- 지속적 통합(Continuous Integration, CI)과 연계
- 소스 제어에 자주 코드를 커밋
- 각 코드 커밋에 자동화된 빌드를 실행
- 결과 : 더 빠른 오류 감지
- 지속적 전달(Continuous Delivery, CD)
- 최종 사용자를 위한 릴리스 코드 빌드
- 결과 : 최종 사용자에게 소프트웨어 더 빨리 제공
- 최근에는 Delivery도 있지만 Deployment도 사용합니다.
Microservices
- 애플리케이션을 상호 독립적인 최소 구성 요소로 분할
- 오해하는 것이 서비스의 개념으로 보는 것이 아니라, 독립적으로 사용할 수 있느냐 없느냐로 구분하는 것이다.
- 느슨한 결합
- 한쪽의 변화가 다른 쪽에 영향을 최소로 주어야 한다.
Container
- 실행에 필요한 모든 파일을 포함하여 전체 실행 환경에서 애플리케이션을 패키지화하고 분리하는 기술
DevOps
Agile and ITIL
- Agile
- 반복적인 개발 주기와 자기 조직화된 팀을 강조하는 일련의 관행
- Manifesto
- 개인과 개인 간의 상호 작용이 프로세스 및 툴 보다 우선
- 작동하는 소프트웨어가 포괄적인 문서보다 우선
- 고객과의 협업이 계약 협상보다 우선
- 변화에 대응하는 것이 계획을 따르는 것보다 우선
- ITIL(IT Infrastructure Library)
- IT 인프라 운영의 최고 사례를 모아 발간
✔ Linux
가상화 소프트웨어를 이용한 Ubuntu Linux 설치
준비물
- 가상화 소프트웨어 설치
- Windows: VMWare Player 또는 Virtual Box
리눅스 종류
- Debian 계열
- Ubuntu
- Slackware 계열
- Suse (잘 안쓸뿐이다.)
- RedHat 계열
- Fedora(시험판), Cent OS(상용화된 버전의 기능을 가진 무료 버전, 최근에 이름을 rocky로 수정), RedHat Enterprise(상용화 버전)
GUI 설치
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install --no-install-recommends-ubuntu-desktop
linux에 원격 접속이 가능하도록 설정
- apt 업데이트 : sudo apt-get update
- 서비스 설치 : sudo apt-get install openssh-server
- 서비스 실행 : sudo systemctl status ssh
- 텍스트가 출력되면 :q를 입력해서 빠져나오기
- 방화벽에서 포트를 열어달라고 요청하기
- sudo ufw allow ssh
- IP 확인 : hostname -I
- 이걸로 putty 접속 ssh로 하겠지
- 포트는 22
- 끌때는 power off 해두기