동아리에서 겨울 방학동안 진행할 프로젝트 주제를 정하면서 컨퍼런스를 다니며 얘기가 많이 나온 DevSecOps를 도전해보고 싶었다. 근데.. 겨울방학은 2달,, 내 클라우드 지식은 0%.... 그래서 DevSecOps 관련 프로젝트를 진행한 동아리 선배님의 조언을 받아 DevOps 아키텍쳐 구현을 먼저 해보기로 하였다! (물론 해당 주제로 정말 프로젝트가 진행될지는 글을 쓰는 지금은 모르겠지만.. 일단 어차피 관심 있어서 언젠가 할 것 같으니까 기초적인 클라우드 지식을 여기저기 찾아보며 공부를 시작하였다!!)
클라우드란?
데이터를 보관, 정리, 분석하고 새로운 서비스를 빠르게 추진할 수 있도록 각종 인프라와 IT 기술을 빌려주는 서비스
기존 IT 구축 방식은 On-premises(온프레미스) 형식이기에 초기 비용, 유지 비용, 구축 방식 등을 사용자 본인이 온전히 감당해야한다는 단점이 존재
이러한 단점을 보완할 수 있는 기술이 바로 클라우드 컴퓨팅이라는 기술
왜 클라우드 라는 단어를 선택하였나?
Cloud의 실제 어원은 구름 → 왜 구름이냐?
사용자는 IT를 구축해야 하지만 직접 사서 구축하지 않는 이상, 어딘가에 있는 IT 자원을 빌려써야 하는데, 이 때 사용되는게 클라우드 컴퓨팅 이라는 기술임
→ 어딘가에 있는 자원들이 서로 연결되어 하나의 망으로 구성된 모습이 마치 구름 처럼 생겨서 이를 클라우드라고 부르게 됨
장점
- 민첩성
- 필요한 장비들(컴퓨팅, 스토리지, DB)들이 이미 구비가 되어 있기에 단 몇 번의 클릭만으로 순식간에 인프라 구축 가능
- 탄력성
- 시기에 맞춰서 자원들을 조정할 수 있음. 서비스 트래픽이 과하게 몰리면 그만큼 자원을 늘리면 되는 것이고, 트래픽이 별로 몰리지 않는 시기에는 줄이면 되는 것.
- 비용 절감
- 사용한 만큼만 지불하기에 기존에 고정적인 온프레미스 방식보다 훨씬 비용이 절감됨 (On-Demand) 나아가 데이터 센터 운영 및 유지 관리에 비용을 내지 않게 됨
종류
IaaS (Infrastructure-as-a-Service)
인프라형 클라우드 서비스로 인프라만 제공해주어 nodejs, MongoDB 등을 개발자가 직접 설치하는 대신 특정 서비스에 종속되지 않음
→ 서버, 스토리지, 네트워크 장비, 서버용 운영체제 등을 빌려줌
→ 하드웨어 장비만 구비되고, OS는 직접 설치하고, 소프트웨어는 개발해서 사용해야 하는 것
PaaS (Platform-as-a-Serviec)
플랫폼형 클라우드 서비스로 기타 프로그램 실행에 필요한 부분(OS, 런타임) 까지 제공해주어 IaaS와 다르게 nodejs, MongoDB 등이 설치되어 있고, 클릭을 통해 서비스를 이용할 수 있음 (모니터링, CI/CD가 제공됨)
→ 때문에 바로 코드만 올려서 실행시키면 됨
→ 인프라에서 한 단계 발전한 형태로 인프라와 IT 기술을 빌려주고, 다양한 지원 서비스도 함께 제공
→ 임대 서버가 해당하는 것으로 OS가 설치된 서버에 사용자가 애플리케이션 등을 설치해서 사용해야 함
SaaS (Software-as-a-Service)
서비스형 클라우드 서비스로 인프라와 OS, 필요 소프트웨어까지 제공해주어 완전한 서비스를 제공받아 사용 가능
→ 인프라와 플랫폼 뿐만 아니라 애플리케이션까지 제공
→ 과거에 PC나 서버 등에 설치해서 이용해야 했던 소프트웨어를 클라우드를 통해 제공하는 서비스
→ 서비스 자체를 제공해준다고 보면 됨 (Gmail, DropBox, Slack, Google Docs 등과 같이)
→ Google Docs의 경우 클라우드를 통해 다른 컴퓨터에서도 쉽게 작업하거나 실시간 공유 작업 가능
EaaS (Everything-as-a-Service)
IaaS, PaaS, SaaS 세가지를 통칭하는 말로 XaaS라고도 함
형태
Public Cloud
인프라 전체를 클라우드에서 받아 기업 입장에서는 인프라 구축에 비용 투자를 하지 않아도 되고, 인프라 관리 인력도 최소화 할 수 있음
Private Cloud
기업이 직접 클라우드 서비스를 구축한 후, 이를 계열사와 고객에게만 제공
높은 수준의 커스터 마이징 가능하며 높은 초기 비용과 유지 보수 비용이 단점이지만 폐쇄적인 만큼 보안성이 높음
→ 대규모 기업 집단이나 정부 등이 선호
Hybrid Cloud
IT 기술은 클라우드에서 받지만, 서비스 유지를 위한 인프라는 클라우드와 기업의 것을 혼용하는 것
→ 클라우드에 기업의 핵심 데이터를 보관하기를 꺼리는 경우나 Private의 백업용, Private에서 Public으로 전환되는 과도기에 사용됨
AWS란?
Amawon Web Service의 약자로 서버, 네트워크 등 인프라 전체를 빌려주는 서비스 (PaaS)
→ 다양한 서비스를 제공하고 있어서 AWS가 제공하는 서비스 만으로 필요한 기능을 대부분 구축 가능
모르는 단어가 있으셨나요?
CI/CD란?
DevOps 엔지니어의 핵심 업무
CI란 Continuous Integration의 약자로 애플리케이션의 새로운 코드 변경사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미
→ 버그를 신속히 찾아 해결하고, 소프트웨어 품질 개선, 새로운 업데이트 검증 및 릴리즈의 시간을 단축시키는 것이 핵심 목표
CD란 Continuous Delivery 또는 Continuous Depolyment의 약자로 공유 레포지토리로 자동 Release하거나 Production 레벨은 자동으로 deploy 하는 것을 의미 (변경 사항이 레포지토리를 넘어, 고객의 프로덕션 환경까지 릴리즈 되는 것을 의미)
→ 개발팀과 비즈니스팀(영업, CS팀 등) 간의 커뮤니케이션 부족 문제를 해결
인프라란?
IT에서 인프라는 조직에서 소프트웨어 애플리케이션을 구축하고 실행하는 데 필요한 모든 것을 이르는 말
IT 인프라의 구성요소는 아래와 같음
- IT 하드웨어
- 비즈니스에 네트워크 리소스를 제공하는 스토리지 장치 및 서버는 IT 하드웨어의 일부
- → 컴퓨터, 휴대폰, 태블릿 등의 디바이스는 모두 이 범주에 속함
- IT 하드웨어는 조직이 IT 환경에서 사용하는 모든 물리적 시스템과 장치를 의미
- IT 소프트웨어
- 추가적으로 데이터 교환을 용이하게 하고, 애플리케이션을 호스팅하고, 조직의 IT 시스템에 중요한 역할을 하는 다른 유형의 시스템 리소스도 포함
- 운영체제, 미들웨어, 데이터베이스, 애플리케이션 서버, 가상화 소프트웨어 등등
- 네트워크 인프라
- 네트워크 인프라를 사용해 인터넷, 근거리 통신망(LAN), 광역 네트워크(WAN), 로드 밸런서 및 네트워크 프로토콜을 이용한 정보 송수신 가능
- 조직이 인터넷을 연결하고 여러 사무실 또는 데이터 센터 간의 연결을 할 수 있게 해줌
- 데이터 센터
- 냉각 장비 및 보안 시스템과 같은 추가 물리적 구성 요소가 필요하며, 온프레미스 데이터 센터는 설치 및 유지 관리 비용이 많이 들기도 함
- 다양한 하드웨어 디바이스를 한 곳에 저장하는 물리적 위치
- 클라우드 서비스
- 타사 비즈니스가 조직에 제공하는 플랫폼, 소프트웨어 및 인프라를 말함
- 보안 인프라
- 데이터를 보호, 암호화 및 보호와 인증 및 권한 부여 시스템, 탐지 및 방지 시스템, 암호화 프로토콜은 모두 인프라 보안 범주에 속함
- IT 아키텍처 내의 모든 위치에서 보안 IT 인프라를 찾을 수 있음
premises란?
premises(프레미스)란 건물, 토지라는 뜻
On-premises(온프레미스)란 기업이나 개인이 자체 시설에서 보유하고 직접 유지관리하는 프라이빗 데이터 센터(IDC)
→ 사용자가 자체적으로 서버들을 운영 구축하는 방식
참고문헌 (감사합니다ㅠㅠ)
https://monktech.tistory.com/32
https://seaforest76.tistory.com/13