Fairy ' s
[07. March] 개발 프로세스 / TIL 본문
DevOps를 처음 접하며
1. 애플리케이션의 배포
- 웹 애플리케이션의 고전적인 배포 방법 : CD / DVD 같은 디스크, 인터넷을 통한 .exe / .msi 같은 설치 파일 (현재도 이용)
- PC 또는 스마트폰에 직접 설치하는 설치형 애플리케이션의 업그레이드 방법과, 브라우저를 통해 사용하는 웹 애플리케이션의 업그레이드 방법은 어떻게 다른가요?
- 설치형 애플리케이션은 사용자가 직접 업데이트를 눌러야하고, 업데이트를 하지 않을 시 사용자에게 잘못된 내용이 표시될 수 있다. 웹 애플리케이션은 사용자가 새로고침을 누르면 수정된 내용이 자동으로 보여진다. - 여러분이 직접 사용하고 있는 웹 애플리케이션은 어떤 것들이 있나요?
- Gmail, Notion, Docs 등 - 웹 브라우저에서 어떤 인터넷 주소로 접속할 때 나오는 웹 사이트는 어떤 언어로 만들어져 있나요?
- HTML, CSS, JavaScript - 서버란 무엇일까요?
- 클라이언트에게 요청을 받아 응답을 전송하는 곳 - SaaS란 무엇일까요?
- System as a Service 라는 말의 약자 / 사용자가 필요한 서비스를 대여식으로 이용할 수 있도록 하는 소프트웨어 (클라우드를 통해 제공)
설치형 애플리케이션과 웹 애플리케이션의 장 / 단점
- 설치형의 장점
- 네트워크가 없는 상황에도 이용할 수 있는 애플리케이션이 많다. - 설치형의 단점
- 설치의 어려움 : SW 개발사들은 OS 별로 다양한 형태의 패키지를 만들어야 하기 때문이다.
- 유지 및 보수의 어려움 : 설치형 SW는 신 기능을 추가하기 힘들고, 버그가 발생해도 이에 대응하기 어렵다.
- 높은 초기 비용 : 설치형 SW는 SW 이용 기간에 상관없이 동일한 비용을 내고 구매해야 했기 때문에 급변하는 비즈니스 환경 속에서 SW(비즈니스 애플리케이션)을 자주 교체해야 하는 기업에겐 부담이었다. - 설치형 SW의 단점을 해결한 SaaS
- 설치가 간편하다 : 인터넷에만 접속할 수 있으면 퍼블릭 클라우드 속 SaaS 패키지에 접근해 서비스를 이용할 수 있다. 로그인이 아닌 API를 통해 접근해야 하는 서비스이며, 서비스 계약 이후 30분 ~ 1시간 만에 이용할 수 있게 된다.
- 유지 및 보수가 쉽다 : SaaS 패키지는 퍼블릭 클라우드 속에 있기 때문에 개발사가 즉시 수정할 수 있으며 최신 SW 업데이트를 빠르게 제공할 수 있다. 유지 및 보수가 쉽다는 것이 가장 큰 장점으로 꼽힌다.
- 진입 장벽이 낮다 : 대부분의 SaaS는 구독형 또는 트래픽 기반으로 이용 비용을 받고 있다. 초기에 높은 구매 비용을 내지 않아도 최신 서비스를 이용할 수 있다. - 이 외 웹의 장점
- 각 운영체제에 맞춰 앱을 개발할 필요가 없어 시간과 비용을 절약할 수 있다.
- 다운로드가 불필요하므로 용량에 부담을 주지 않는다.
- 유저가 업데이트 버전을 다운로드 할 필요가 없다. - SaaS (웹) 의 단점
- 외부 보안이 약하다 : 데이터 처리 및 보관이 외부 클라우드 서비스에서 이루어진다.
- 인터넷이 있어야 한다 : 인프라가 외부와 단절되어 있거나 통신 환경이 열악하면 이용할 수 없다.
웹 호스팅 서비스와 클라우드 서비스
- 웹 호스팅 서비스
- ISP (인터넷 서비스 제공 업체)가 제공하는 웹 서버를 임대해주고, 자체 도메인을 갖도록 관리해 주는 서비스 - 클라우드 서비스
- 인터페이스 기능을 제외한 컴퓨팅 자원을 제공하는 서비스
- Saas, Paas, IaaS 가 있다. - 둘의 차이점
- 웹 호스팅 서비스는 단지 서버와 도메인을 관리하는 서비스이지만, 클라우드 서비스는 사용자가 필요한 컴퓨팅 자원을 제공해주는 서비스이기 때문에, 사용자가 클라우드 서비스를 이용하여 개발 후 웹 호스팅 서비스를 이용해 애플리케이션을 정식으로 도출해내는 식일 것이라고 생각한다.
2. 서비스가 사용자에게 도달하기까지
전통적인 소프트웨어 전달 방식 : 출시 기한을 정해놓고 소프트웨어를 완성 : 폭포수 모델
- 문제점
- 출시 시점에 소프트웨어의 신뢰성, 안정성을 보장할 수 없음
- 출시를 약속하고 뚜껑을 열어봤을 때, 산더미처럼 쌓여있는 버그 - 소프트웨어 안정성 개선을 위한 노력 : 베타 버전 등을 통한 테스트
- 특징
- 사용자가 항상 최신 상태 업데이트
- 버그 수정을 사용자에게 전달하기 어려움
- 모바일 애플리케이션이 사용하는 전달 방식
클라우드 서비스의 전달 방식 : 고객의 요구에 민첩하게 대응하여 지속적 전달 : 애자일(Agile) 모델
코드 Push => 코드 저장소 => 코드 빌드 / 테스트 / 릴리즈 => 모든 과정을 통과한 빌드를 배포 서버로 전달 => 배포 서버에서 프로비저닝 => 애플리케이션 서버로 배포
- 장점
- 사용자 업데이트에 대한 걱정에서 벗어남
- 하루에 여러번 릴리즈 가능 / 빠른 문제 해결
- 다양한 배포 방식을 적용하거나 테스트 가능
- 빠른 배포를 보장
- 이를 달성하기 위해 전달 워크플로가 수립되어야 하며, 자동화가 필수적
이러한 전달 / 배포 파이프라인을 구성하는 것 역시 DevOps의 영역이다.
* 프로비저닝 : 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것
- 서비스 전달 관점에서 DevOps의 역할 : 서비스 전달 / 배포 워크 플로우를 구성할 수 있어야 한다.
3. CI / CD 파이프라인과 Stage
CI / CD 파이프라인 : 지속적 배포 (Continuous Deployment)
- Plan , Code, Buile, Test, Release, Deploy, Operate
- 지속적 통합 (Continuous Integration / CI) : Code, Build, Test
- 잦은 코드 Push => 코드 저장소 => 코드 빌드 / 유닛 테스트 => 코드 빌드 결과물이 다른 컴포넌트와 잘 통합되는지 확인 => 테스트 결과 확인 후 개선
- 필요성 : 버그를 일찍 발견할 수 있고, 테스트가 완료된 코드를 빠르게 전달할 수 있다. 지속적인 배포가 가능해진다. - 지속적 전달 (Continuous Delivery / CD) : Test, Release, Deploy, Operate
- 배포 가능한 소프트웨어 패키지 작성 / 빌드 선정 => 프로비저닝 / 서비스 노출 => 서비스 현황 파악 / 문제 감지
4. DevOps
DevOps 란 ? 작동 방식 ?
- Develpment(개발) + Operations(운영) 의 합성어로, SW 개발자들과 정보 기술 전문가들 사이의 의사소통, 협업, 통합을 강조하는 개발 환경이나 문화
- SW 개발 조직과 운영 조직 간의 상호 의존적 대응
- 애플리케이션과 서비스를 빠른 속도로 개발하고 배포하는 것을 목적으로 한다.
- Dev(개발)팀 : 잦은 배포와 업데이트, 쉽고 빠른 새로운 기능 제공
- Ops(운영)팀 : 인프라 관리, 모니터링 및 제어, 프로덕션 앱의 안정성
* 프로덕션 앱 : 소프트웨어를 출시할 때 베타 버전, 개발자 버전이 있듯, 프로덕션은 고객들이 사용할 수 있는 안정적인 공식 버전
'Devops Bootcamp' 카테고리의 다른 글
[10. March] 리눅스 #2 / TIL (0) | 2023.03.10 |
---|---|
[09. March] 리눅스 #1 / TIL (0) | 2023.03.09 |
[08. March] 규모에 따른 운영 / TIL (0) | 2023.03.08 |
[Book] 비전공자를 위한 이해할 수 있는 IT지식 #2 (0) | 2023.03.04 |
[Book] 비전공자를 위한 이해할 수 있는 IT 지식 #1 (4) | 2023.03.02 |