[클라우드컴퓨팅] 1-1.프로그램 개발부터 사용자 전달
1. 개발 단계
개발 단계 : 레시피 작성과 요리
- 프로그램 개발은 백엔드, 프론트엔드, 데이터베이스 작업이 연결되어 서비스의 핵심 기능을 설계·구축하는 과정
- 설계는 레시피를 작석하는 것과 같음
- 구축 : 요리를 만드는 것과 같음
- 백엔드 개발 : 주방에서 요리 준비
- 사용자가 보지 않는 핵심 기능을 구축하는 작업
- 사용자 정보 저장, 데이터 처리 등 서비스의 기반을 만듦 - 프론트엔드 개발 : 요리의 데코레이션
-웹이나 앱의 프론트엔드는 사용자가 매력적으로 느끼고 쉽게 사용할 수 있도록 설게됨 - 데이터베이스 개발 : 창고에서 재료 정리
- 데이터를 체계적으로 저장·관리하여 필요한 정보를 빠르게 찾을 수 있게 하는 작업
- 창고에서 재료를 정리하듯, 데이터 검색 효율과 보안을 유지
백엔드 개발
- 사용자에게 보이지 않는 서비스의 핵심 기능을 구축하는 작업
- 사용자 정보 저장, 데이터 처리, 시스템 연결, API 설계, 보안 관리 등 중요한 기능을 개발하고 구현함
- 서비스의 기반을 쌓는 중요한 역할, 사용자에게 안정적이고 효율적인 서비스를 제공하는 데 필수적
가장 중심이 되는 기능
- 데이터 처리
- 사용자 요청에 필요한 데이터를 준비함 - API 설계
- 다른 시스템과 데이터를 주고받을 수 있도록 연결함 - 보안 관리
- 사용자 정보를 보호하고 서비스를 안전하게 운영함
프론트엔드 개발
- UI 설계
- 프론트엔드 개발자는 사용자가 웹이나 앱을 쉽게 이용할 수 있도록 직관적인 인터페이스를 설계함 - 데이터 표시
- 백엔드에서 제공받은 데이터를 사용자가 이해하기 쉽도록 시각적으로 꾸며줌 - 다양한 기기 지원
- 모바일, 태블릿, 데스크톱 등 다양한 기기에서 서비스가 매끄럽게 작동하도록 반응형 디자인을 적용함
데이터베이스 개발
- 서비스 운영을 위해 데이터를 효율적으로 관리하는 역할을 수행함
- 데이터 모델링
- 데이터의 종류와 관계를 정의하고, 데이터를 저장할 테이블과 컬럼을 설계함 - 속도 최적화
- 데이터 저장 및 조회 속도를 향상시켜 사용자가 빠르게 정보를 얻을 수 있도록 함 - 데이터 백업
- 데이터베이스에 문제가 발생했을 때 빠르게 복구할 수 있도록 데이터를 정기적으로 백업함
개발 단계의 결론
- 백엔드, 프론트엔드, 데이터베이스 개발자들이 각자의 역할을 잘 수행할 때, 서비스가 원활하게 운영될 수 있음
- 각 부분의 필요사항을 명확히 파악하고 준비하는 것이 중요함
- 이를 통해 고객이 만족할 수 있는 서비스를 제공할 수 있게 됨
- 협업의 중요성
- 각 개발 분야 간의 원활한 소통과 협력이 필수적 - 세밀한 준비
- 각 단계에서 필요한 사항을 꼼꼼히 파악하고 준비해야 함 - 사용자 중심 설계
- 최종적으로 사용자가 만족할 수 있는 서비스를 목표로 개발해야 함
2. 배포단계
배포 단계 : 완성된 요리를 손님에게 서빙
- 개발팀이 만든 서비스를 실제 사용자에게 공개하는 중요한 단계
- 개발 완료
- 개발팀이 서비스를 완성 - 배포 준비
- 서비스 제공 전 준비 작업 해야함 - 서비스 제공
- 서비스를 사용자에게 공개함.
- 사용자에게 서비스를 제공해야함
DevOps 엔지니어의 역할
- 개발팀이 만든 서비스를 사용자에게 안전하고 효율적으로 배포하는 역할
- 개발된 서비스를 사용자에게 제공하는 마지막 단계를 책임지는 중요한 역할
- 자동 배포 준비
- 코드 변경 시 자동화된 빌드 및 배포 시스템을 구축하고 관리
- 이를 통해 개발팀의 코드 변경 사항이 사용자에게 빠르고 안전하게 전달됨 - 자동화된 테스트
- 서비스 품질을 지속적으로 유지하기 위해 자동화된 테스트 시스템을 구축하고 관리
- 개발팀의 코드가 예상대로 작동하는지 확인, 서비스 안정성을 높여 사용자에게 안정적인 서비스를 제공함 - 문제 발생 시 복구
-서비스 장애가 발생했을 때, 신속한 복구 체계를 마련해 최소한의 영향 미치도록 함
클라우드 엔지니어의 역할
- 서비스를 안정적으로 운영
- 사용자가 편리하게 이용할 수 있도록 함
- 서비스의 기반이 되는 클라우드 인프라 관리, 서비스 트래픽 변화에 유연하게 대응
- 클라우드 인프라 설정
- AWS, Azure, Google Cloud 등의 클라우드 플랫폼에서 서버, 데이터베이스, 네트워크 환경을 구성 - 자동 확장 기능 설정
-서비스 사용자가 급증하거나 감소할 때, 자동으로 서버 용량 조절해 서비스 성능 저하를 방지함 - 리소스와 비용 관리
- 서비스 운영에 필요한 리소스를 효율적으로 관리하여 불필요한 비용 발생을 최소화함
배포 단계의 중요성
- 안정적인 서비스 제공
- 성공적인 서비스 출시와 지속적인 운영을 위해서는 DevOps와 클라우드 엔지니어의 협력이 필수적 - 확장성 있는 인프라
- 자동화된 배포 시스템
- 실수 최소화, 문제 발생시 신속하게 대응 - 비용 효율적 운영
- 사용자에 따라 자원을 유연하게 조절함
3. 운영단계
운영 단계
- 클라우드 엔지니어와 사이트 신뢰성 엔지니어(SRE)는 서비스가 원활하게 운영되도록 중요한 역할을 수행함
- 문제 발생 시 신속하게 대응하여 사용자가 끊김없이 서비스를 이용할 수 있도록 함
- 모니터링
- 서비스 상태를 실시간으로 살펴보며 문제를 빠르게 찾아냄
- 서비스 상태를 지속적으로 모니터링하여 문제 발생 시 신속하게 대응함 - 문제 해결
- 서비스에 문제가 생기면 신속하고 효과적으로 해결하는 과정
-문제 해결을 위해 다양한 도구와 기술을 사용하고 사용자 불편을 최소화하기 위해 노력함 - 성능 최적화
- 서비스 성능을 계속 개선하고 최적화하는 과정
- 성능 최적화를 통해 서비스 속도를 높이고 시스템 안정성을 강화하여 사용자 만족도를 높임
사이트 신뢰성 엔지니어(SRE)의 역할
- 서비스 상태를 확인하고, 서비스가 잘 운영되도록 관리
- 문제가 발생했을 때 빠르게 해결하는 것
- 상황 모니터링
- 서비스가 잘 작동하는지, 사용자가 많이 접속하는지, 서버에 문제 없는지 실시간으로 확인
- 문제가 발생하면 바로 알림을 받도록 함
Slack, Notion 등과 같은 프로그램 이용해 알림 받음 - 서비스 품질 유지
- 서비스가 항상 최고의 상태를 유지하도록 노력
- 사용자들이 불편함 없이 서비스를 이용하도록 개선함 - 문제 대비와 대응
- 서비스에 문제가 발생하면 신속하게 해결하기 위해 미리 대비책을 마련함
- 문제가 생기면 빠르게 해결 방안을 찾음
운영 단계의 중요성
- 운영 단계는 개발된 서비스를 안정적으로 유지하고 지속적으로 개선하는 중요한 과정
- 실시간 모니터링, 신속한 문제 해결, 지속적인 최적화가 핵심
- 효과적인 운영은 사용자 만족도 향상과 비즈니스 성공으로 이어짐
- 실시간 모니터링
- 서비스 상태를 24시간 감시하고 문제 발생시 즉각적인 알림을 통해 신속한 대응을 가능하도록 함
알림 시스템 자동화 되어있음 - 서비스 품질 유지
- 최상의 서비스 품질을 유지하기 위해 성능 분석 및 개선을 지속적으로 수행함 - 문제 대비와 대응
- 서비스 장애에 대비하여 미리 대응 계획을 수립
- 문제 발생 시 빠르게 해결 방안을 찾음
4. 결론
개발, 배포, 운영 단계의 연계성
- 각 단계는 서로 긴밀하게 연결되어 있음
- 각 단계는 다음 단계를 위한 기반을 마련하고, 운영 과정에서 발견되는 문제나 개선점은 다시 개발 단계로 돌아가 서비스를 꾸준히 개선하는 데 활용됨
- 개발
- 프로그램의 기본 구조를 만들고 기능을 구현하는 단계
- 백엔드 개발, 프론트엔드 개발, 데이터베이스 개발 등이 포함됨 - 배포
- 개발된 프로그램을 사용자에게 제공함
- DevOps 엔지니어와 클라우드 엔지니어가 협력하여 자동화된 배포 시스템을 통해 서비스를 안정적으로 배포함
- 지속적인 배포를 통해 사용자에게 최신 기능을 빠르게 제공함 - 운영
- 배포된 프로그램을 안정적으로 유지하고 지속적으로 개선함
- 클라우드 엔지니어가 서비스를 모니터링하고 문제 발생 시 신속하게 해결함
- SRE는 장애 발생 시 빠르게 대응하여 서비스 중단을 최소화함
- 지속적인 모니터링 및 분석을 통해 서비스를 개선하고 사용자 만족도를 높임
각 단계별 핵심 포인트
- 개발
- 코드 품질 : 코드를 깔끔하게 작성하여 개발자들이 코드를 쉽게 이해하고 수정할 수 있도록 함
- 이는 유지보수 및 확장 용이성을 높이는 데 중요함
- 기능 구현 : 사용자 요구사항을 명확하게 이해하고 기능을 완벽히 구현해야함. 사용자 만족도를 높이는데 중요함
- 팀 협력 : 개발팀 간의 원활한 소통과 협력을 통해 코드 리뷰를 진행하고 개발 과정에서 발생하는 문제를 신속하게 해결함 - 배포
- 자동화 시스템 : 안정적이고 빠른 배포 시스템을 구축하여 개발된 프로그램을 사용자에게 신속하고 안전하게 제공. DevOps 엔지니어와 클라우드 엔지니어의 협력이 필수적
- 안정성 테스트 : 서비스 중단을 최소화하고 사용자 불편을 해소하기 위해 개발된 프로그램을 철저하게 테스트함
- 지속적인 업데이트 : 지속적인 배포를 통해 최신 기능을 빠르게 제공하고 사용자 피드백을 반영하여 서비스를 개선함 - 운영
- 서비스 모니터링 : 서비스 상태를 지속적으로 모니터링하여 문제를 예방하고 성능 저하를 조기에 감지함
- 문제 해결 : 문제 발생시 신속하게 분석하고 해결하여 서비스 중단 시간을 최소화함
- 장애 대응 : 장애 발생시 빠르게 대응하여 서비스 중단을 최소화하고 사용자 만족도를 향상시킴. SRE가 중요한 역할을 함