학교 공부/클라우드컴퓨팅

[클라우드컴퓨팅] 1-1.프로그램 개발부터 사용자 전달

KimNang 2024. 11. 13. 23:52

1. 개발 단계

개발 단계 : 레시피 작성과 요리

- 프로그램 개발은 백엔드, 프론트엔드, 데이터베이스 작업이 연결되어 서비스의 핵심 기능을 설계·구축하는 과정

- 설계는 레시피를 작석하는 것과 같음

- 구축 : 요리를 만드는 것과 같음

  • 백엔드 개발 : 주방에서 요리 준비
    - 사용자가 보지 않는 핵심 기능을 구축하는 작업
    - 사용자 정보 저장, 데이터 처리 등 서비스의 기반을 만듦
  • 프론트엔드 개발 : 요리의 데코레이션
    -웹이나 앱의 프론트엔드는 사용자가 매력적으로 느끼고 쉽게 사용할 수 있도록 설게됨
  • 데이터베이스 개발 : 창고에서 재료 정리
    - 데이터를 체계적으로 저장·관리하여 필요한 정보를 빠르게 찾을 수 있게 하는 작업
    - 창고에서 재료를 정리하듯, 데이터 검색 효율과 보안을 유지
백엔드 개발

- 사용자에게 보이지 않는 서비스의 핵심 기능을 구축하는 작업

- 사용자 정보 저장, 데이터 처리, 시스템 연결, API 설계, 보안 관리 등 중요한 기능을 개발하고 구현함

- 서비스의 기반을 쌓는 중요한 역할, 사용자에게 안정적이고 효율적인 서비스를 제공하는 데 필수적
가장 중심이 되는 기능

  • 데이터 처리
    - 사용자 요청에 필요한 데이터를 준비함
  • API 설계
    - 다른 시스템과 데이터를 주고받을 수 있도록 연결함
  • 보안 관리
    - 사용자 정보를 보호하고 서비스를 안전하게 운영함
프론트엔드 개발
  • UI 설계
    - 프론트엔드 개발자는 사용자가 웹이나 앱을 쉽게 이용할 수 있도록 직관적인 인터페이스를 설계함
  • 데이터 표시
    - 백엔드에서 제공받은 데이터를 사용자가 이해하기 쉽도록 시각적으로 꾸며줌
  • 다양한 기기 지원
    - 모바일, 태블릿, 데스크톱 등 다양한 기기에서 서비스가 매끄럽게 작동하도록 반응형 디자인을 적용함
데이터베이스 개발

- 서비스 운영을 위해 데이터를 효율적으로 관리하는 역할을 수행함

  • 데이터 모델링
    - 데이터의 종류와 관계를 정의하고, 데이터를 저장할 테이블과 컬럼을 설계함
  • 속도 최적화
    - 데이터 저장 및 조회 속도를 향상시켜 사용자가 빠르게 정보를 얻을 수 있도록 함
  • 데이터 백업
    - 데이터베이스에 문제가 발생했을 때 빠르게 복구할 수 있도록 데이터를 정기적으로 백업함
개발 단계의 결론

- 백엔드, 프론트엔드, 데이터베이스 개발자들이 각자의 역할을 잘 수행할 때, 서비스가 원활하게 운영될 수 있음

- 각 부분의 필요사항을 명확히 파악하고 준비하는 것이 중요함

- 이를 통해 고객이 만족할 수 있는 서비스를 제공할 수 있게 됨

  1. 협업의 중요성
    - 각 개발 분야 간의 원활한 소통과 협력이 필수적
  2. 세밀한 준비
    - 각 단계에서 필요한 사항을 꼼꼼히 파악하고 준비해야 함
  3. 사용자 중심 설계
    - 최종적으로 사용자가 만족할 수 있는 서비스를 목표로 개발해야 함

 

2. 배포단계

배포 단계 : 완성된 요리를 손님에게 서빙

- 개발팀이 만든 서비스를 실제 사용자에게 공개하는 중요한 단계

  1. 개발 완료
    - 개발팀이 서비스를 완성
  2. 배포 준비
    - 서비스 제공 전 준비 작업 해야함
  3. 서비스 제공
    - 서비스를 사용자에게 공개함.
    - 사용자에게 서비스를 제공해야함
DevOps 엔지니어의 역할

- 개발팀이 만든 서비스를 사용자에게 안전하고 효율적으로 배포하는 역할

- 개발된 서비스를 사용자에게 제공하는 마지막 단계를 책임지는 중요한 역할

  • 자동 배포 준비
    - 코드 변경 시 자동화된 빌드 및 배포 시스템을 구축하고 관리
    - 이를 통해 개발팀의 코드 변경 사항이 사용자에게 빠르고 안전하게 전달됨
  • 자동화된 테스트
    - 서비스 품질을 지속적으로 유지하기 위해 자동화된 테스트 시스템을 구축하고 관리
    - 개발팀의 코드가 예상대로 작동하는지 확인, 서비스 안정성을 높여 사용자에게 안정적인 서비스를 제공함
  • 문제 발생 시 복구
    -서비스 장애가 발생했을 때, 신속한 복구 체계를 마련해 최소한의 영향 미치도록 함
클라우드 엔지니어의 역할

- 서비스를 안정적으로 운영

- 사용자가 편리하게 이용할 수 있도록 함

- 서비스의 기반이 되는 클라우드 인프라 관리, 서비스 트래픽 변화에 유연하게 대응

  • 클라우드 인프라 설정
    - AWS, Azure, Google Cloud 등의 클라우드 플랫폼에서 서버, 데이터베이스, 네트워크 환경을 구성
  • 자동 확장 기능 설정
    -서비스 사용자가 급증하거나 감소할 때, 자동으로 서버 용량 조절해 서비스 성능 저하를 방지함
  • 리소스와 비용 관리
    - 서비스 운영에 필요한 리소스를 효율적으로 관리하여 불필요한 비용 발생을 최소화함
배포 단계의 중요성
  • 안정적인 서비스 제공
    - 성공적인 서비스 출시와 지속적인 운영을 위해서는 DevOps와 클라우드 엔지니어의 협력이 필수적
  • 확장성 있는 인프라
    - 자동화된 배포 시스템
    - 실수 최소화, 문제 발생시 신속하게 대응
  • 비용 효율적 운영
    - 사용자에 따라 자원을 유연하게 조절함

 

3. 운영단계

운영 단계 

- 클라우드 엔지니어와 사이트 신뢰성 엔지니어(SRE)는 서비스가 원활하게 운영되도록 중요한 역할을 수행함

- 문제 발생 시 신속하게 대응하여 사용자가 끊김없이 서비스를 이용할 수 있도록 함

  1. 모니터링
    - 서비스 상태를 실시간으로 살펴보며 문제를 빠르게 찾아냄
    - 서비스 상태를 지속적으로 모니터링하여 문제 발생 시 신속하게 대응함
  2. 문제 해결
    - 서비스에 문제가 생기면 신속하고 효과적으로 해결하는 과정
    -문제 해결을 위해 다양한 도구와 기술을 사용하고 사용자 불편을 최소화하기 위해 노력함
  3. 성능 최적화
    - 서비스 성능을 계속 개선하고 최적화하는 과정
    - 성능 최적화를 통해 서비스 속도를 높이고 시스템 안정성을 강화하여 사용자 만족도를 높임
사이트 신뢰성 엔지니어(SRE)의 역할

- 서비스 상태를 확인하고, 서비스가 잘 운영되도록 관리

- 문제가 발생했을 때 빠르게 해결하는 것

  • 상황 모니터링
    - 서비스가 잘 작동하는지, 사용자가 많이 접속하는지, 서버에 문제 없는지 실시간으로 확인
    - 문제가 발생하면 바로 알림을 받도록 함
    Slack, Notion 등과 같은 프로그램 이용해 알림 받음
  • 서비스 품질 유지
    - 서비스가 항상 최고의 상태를 유지하도록 노력
    - 사용자들이 불편함 없이 서비스를 이용하도록 개선함
  • 문제 대비와 대응
    - 서비스에 문제가 발생하면 신속하게 해결하기 위해 미리 대비책을 마련함
    - 문제가 생기면 빠르게 해결 방안을 찾음
운영 단계의 중요성

- 운영 단계는 개발된 서비스를 안정적으로 유지하고 지속적으로 개선하는 중요한 과정

- 실시간 모니터링, 신속한 문제 해결, 지속적인 최적화가 핵심

- 효과적인 운영은 사용자 만족도 향상과 비즈니스 성공으로 이어짐

  • 실시간 모니터링
    - 서비스 상태를 24시간 감시하고 문제 발생시 즉각적인 알림을 통해 신속한 대응을 가능하도록 함
    알림 시스템 자동화 되어있음
  • 서비스 품질 유지
    - 최상의 서비스 품질을 유지하기 위해 성능 분석 및 개선을 지속적으로 수행함
  • 문제 대비와 대응
    - 서비스 장애에 대비하여 미리 대응 계획을 수립
    - 문제 발생 시 빠르게 해결 방안을 찾음

 

4. 결론

개발, 배포, 운영 단계의 연계성

- 각 단계는 서로 긴밀하게 연결되어 있음

- 각 단계는 다음 단계를 위한 기반을 마련하고, 운영 과정에서 발견되는 문제나 개선점은 다시 개발 단계로 돌아가 서비스를 꾸준히 개선하는 데 활용됨

  1. 개발
    - 프로그램의 기본 구조를 만들고 기능을 구현하는 단계
    - 백엔드 개발, 프론트엔드 개발, 데이터베이스 개발 등이 포함됨
  2. 배포
    - 개발된 프로그램을 사용자에게 제공함
    - DevOps 엔지니어와 클라우드 엔지니어가 협력하여 자동화된 배포 시스템을 통해 서비스를 안정적으로 배포함
    - 지속적인 배포를 통해 사용자에게 최신 기능을 빠르게 제공함
  3. 운영
    - 배포된 프로그램을 안정적으로 유지하고 지속적으로 개선함
    - 클라우드 엔지니어가 서비스를 모니터링하고 문제 발생 시 신속하게 해결함
    - SRE는 장애 발생 시 빠르게 대응하여 서비스 중단을 최소화함
    - 지속적인 모니터링 및 분석을 통해 서비스를 개선하고 사용자 만족도를 높임
각 단계별 핵심 포인트
  • 개발
    - 코드 품질 : 코드를 깔끔하게 작성하여 개발자들이 코드를 쉽게 이해하고 수정할 수 있도록 함
    - 이는 유지보수 및 확장 용이성을 높이는 데 중요함
    - 기능 구현 : 사용자 요구사항을 명확하게 이해하고 기능을 완벽히 구현해야함. 사용자 만족도를 높이는데 중요함
    - 팀 협력 : 개발팀 간의 원활한 소통과 협력을 통해 코드 리뷰를 진행하고 개발 과정에서 발생하는 문제를 신속하게 해결함
  • 배포
    - 자동화 시스템 : 안정적이고 빠른 배포 시스템을 구축하여 개발된 프로그램을 사용자에게 신속하고 안전하게 제공. DevOps 엔지니어와 클라우드 엔지니어의 협력이 필수적
    - 안정성 테스트 : 서비스 중단을 최소화하고 사용자 불편을 해소하기 위해 개발된 프로그램을 철저하게 테스트함
    - 지속적인 업데이트 : 지속적인 배포를 통해 최신 기능을 빠르게 제공하고 사용자 피드백을 반영하여 서비스를 개선함
  • 운영
    - 서비스 모니터링 : 서비스 상태를 지속적으로 모니터링하여 문제를 예방하고 성능 저하를 조기에 감지함
    - 문제 해결 : 문제 발생시 신속하게 분석하고 해결하여 서비스 중단 시간을 최소화함
    - 장애 대응 : 장애 발생시 빠르게 대응하여 서비스 중단을 최소화하고 사용자 만족도를 향상시킴. SRE가 중요한 역할을 함