캡스톤 설계 [건물별 소통 플랫폼 BBC]

데브옵스& 인프라 기술스택 및 아키텍쳐

softmoca__ 2024. 3. 7. 15:30
목차

배포시의 전체적인 프론트엔드와 백엔드의 시스템 아키텍처를 피그마로 그려보았다.

대부분의 기술을 실직적으로 써본적은 없고 아직 간략한 공부만 해둔 상태라 많은 수정이 차후 들어갈것같다.

이번 프로젝트를 통해 대략적인 파이프 라인을 설계 및 구성하고 그에 대한 이해가 높아지는 것이 목표이다.

차후 에러 핸들링 목록을 로깅하여 slack Hooks를 생성하거나 알람 스크립트를 작성하여  관리자인 나에게 알람이 오게 하는것도 구현을 해보고 싶은 욕심이 있다.

 

 

 

 

 

데브옵스& 인프라

Deploy: AWS(EC2,CloudFront, S3, Route 53, RDS, ELB(ALB),ACM,ECR), Docker

CI/CD : Github Actions

 

EC2

 클라우드 컴퓨팅 서비스로, 가상 컴퓨팅 리소스를 제공하는 데 사용된다.

 EC2는 사용자가 필요한 만큼 가상 서버(인스턴스)를 시작, 관리 및 종료할 수 있는 확장 가능한 플랫폼을 제공한다.

인스턴스 (Instances):

인스턴스는 가상 서버로, 사용자가 선택한 운영 체제와 애플리케이션을 실행할 수 있는 가상 환경을 제공한다.

다양한 인스턴스 유형과 구성 옵션이 있으며, 성능, 메모리, CPU 및 스토리지 요구 사항에 맞게 선택할 수 있다.

스토리지:

EC2 인스턴스에는 여러 유형의 스토리지 옵션이 있다.

Amazon Elastic Block Store (EBS)를 사용하여 데이터를 저장하고, 인스턴스 스토어를 사용하여 일시적인 데이터를 보관할 수 있다.

보안 그룹 (Security Groups):

보안 그룹은 인스턴스의 방화벽 규칙을 정의하며, 인바운드 및 아웃바운드 트래픽을 제어한다.

인스턴스에 대한 보안을 관리하는 데 사용된다.

키 페어 (Key Pairs):

EC2 인스턴스에 SSH (리눅스) 또는 RDP (Windows)와 같은 원격 액세스를 활성화하려면 키 페어를 사용한다.

개인 키는 인스턴스에 접속하기 위해 필요하다.

EC2는 다양한 용도로 사용되며, 웹 호스팅, 애플리케이션 배포, 데이터베이스 호스팅, 머신 러닝 및 데이터 분석과 같은 

다양한 클라우드 컴퓨팅 작업을 지원한다.

사용자는 필요에 따라 인스턴스를 시작하고 종료하여 비용을 관리하며, 필요한 만큼 확장하여 애플리케이션 성능을 향상시킬 수 있다.



위와 같은 주요 특징이 있다.

하지만 무엇보다 EC2를 선택한 이유는 현재 배포 아키텍처에서 가장 많이 사용하고 있다.

나 또한 EC2 사용 경험이 있어 빠르게 배포를 할수 있을것 같고 해당 경험을 토대로 추가 인프라를 추가하며 확장해 볼 예정이다.

 

 

 

RDS

완전 관리형 관계형 데이터베이스 서비스로서MySQL, PostgreSQL, Oracle, SQL Server 및 MariaDB와 같은 다양한 데이터베이스 엔진을 사용하여 데이터베이스를 쉽게 배포, 운영 및 확장할 수 있다.

완전 관리형 서비스: 

Amazon RDS는 데이터베이스 엔진의 일상적인 관리 작업을 대신 수행하므로 사용자는 데이터베이스의 하드웨어 및 소프트웨어 설정, 패치 및 백업과 같은 작업을 걱정하지 않고 데이터베이스에 집중할 수 있다.

다양한 데이터베이스 엔진: 

Amazon RDS는 MySQL, PostgreSQL, Oracle, SQL Server 및 MariaDB와 같은 다양한 데이터베이스 엔진을 지원한다.

원하는 엔진을 선택하고 사용할 수 있다.

자동 백업: 

Amazon RDS는 자동 백업을 지원하여 데이터베이스 상태를 일정한 간격으로 백업하고 복원할 수 있다.

보안: 

데이터베이스 액세스를 제어하기 위해 Virtual Private Cloud (VPC) 내에서 데이터베이스를 실행하고, 

데이터베이스 암호화 및 인증을 통해 데이터 보안을 강화할 수 있다.

 

성능 모니터링: 

Amazon CloudWatch와 통합하여 데이터베이스 성능을 모니터링하고 대시보드를 통해 리소스 사용량 및 알림을 확인할 수 있다.

Amazon RDS는 데이터베이스 관리 부담을 줄이고 안정적이고 확장 가능한 관계형 데이터베이스 솔루션을 제공한다. 

데이터베이스 스키마 설계부터 운영 및 보안에 이르는 모든 측면에서 강력한 지원을 제공하여 

비즈니스 애플리케이션을 구축하고 실행하는 데 도움이 된다.

 

위와 같은 주요 특징이 있다.

하지만 무엇보다 EC2를 선택한 이유와 같이 현재 배포 아키텍처에서 가장 많이 사용하고 있다.

RDS 또한 사용 경험이 있어 빠르게 배포를 할수 있을것 같고 해당 경험을 토대로 추가 인프라를 추가하며 확장해 볼 예정이다.

 

 

아래 부터는 아직 사용해 보진 않았지만 사용해 보려고 고려중인 인프라들의 특징을 정리해 보았다.

 

S3

객체 스토리지 서비스로, 클라우드 환경에서 데이터를 저장하고 관리하는 데 사용된다.

데이터의 확장 가능한, 내구성이 높은, 안전한 저장소를 제공하며, 다양한 용도로 활용된다.

버킷 (Buckets): 

데이터는 버킷이라고 하는 컨테이너에 저장된다 

각 버킷은 전역적으로 고유한 이름을 가져야 하며, 계정 내에서 여러 개의 버킷을 생성할 수 있다.

객체 (Objects): 

버킷 내에 저장된 데이터 단위를 객체라고 한다. 

객체는 데이터 파일과 메타데이터(객체의 키, 값을 포함하는)로 구성되며, 고유한 키(유일한 이름)로 식별된다.

내구성 (Durability): 

Amazon S3는 데이터를 여러 복제본으로 분산하여 내구성을 보장한다. 

이러한 내구성은 데이터의 손실을 방지하고 실수 또는 장애 시에 데이터를 복원할 수 있게 한다.

액세스 제어: 

다양한 수준의 액세스 제어를 제공하여 버킷 및 객체 수준에서 액세스 권한을 관리하고, 

공개적으로 액세스 가능하도록 설정할 수도 있고, 특정 IAM 사용자 및 역할에만 제한된 액세스를 허용할 수도 있다.

데이터 전송: 

Amazon S3는 데이터를 업로드 및 다운로드하기 위한 다양한 방법과 클라이언트 라이브러리를 지원하며, 

대용량 데이터 전송을 위한 기능도 제공한다.

Amazon S3는 데이터 백업, 웹 호스팅, 미디어 스트리밍, 데이터 분석, 애플리케이션 아카이빙 및 협업과 같은 다양한 시나리오에서 사용된다. 데이터의 내구성과 안전한 저장, 데이터 액세스 제어 및 확장 가능한 스토리지를 필요로 하는 다양한 비즈니스 요구 사항을 충족시키는 강력한 클라우드 스토리지 솔루션으로 Amazon S3가 널리 사용되고 있다.

 

 

lamda

서버리스 컴퓨팅 서비스로, 코드를 실행하고 관리하기 위한 서버 프로비저닝이나 관리 없이 애플리케이션을 실행할 수있다.

AWS Lambda를 사용하면 이벤트 트리거에 응답하여 코드를 실행하고, 필요한 리소스만 사용하므로 비용을 절약할 수 있다.



이벤트 기반 실행: 

Lambda 함수는 이벤트 소스(예: Amazon S3, Amazon DynamoDB, Amazon API Gateway, AWS IoT 등)에서 발생하는 이벤트에 대응하여 실행되며 이벤트가 발생하면 Lambda 함수가 자동으로 호출되고 작업을 수행한다.

서버 관리 없음: 

서버 프로비저닝, 관리 및 확장에 대한 걱정 없이 코드를 실행한다. 사용자는 코드를 업로드하고 AWS Lambda가 나머지를 관리한다.

다양한 런타임: 

여러 가지 런타임(예: Node.js, Python, Java, Ruby, Go, .NET 등)을 지원하므로 사용자가 선호하는 프로그래밍 언어로 함수를 작성할 수 있다.

자동 확장

Lambda 함수는 이벤트 처리 요청에 따라 자동으로 확장된다.

더 많은 이벤트가 발생하면 Lambda 함수가 병렬로 실행되어 처리량이 증가한다.

마이크로서비스 아키텍처: 

Lambda 함수는 마이크로서비스 아키텍처 및 서버리스 아키텍처를 구축하는 데 이상적이며, 필요한 경우 여러 함수를 조합하여 애플리케이션을 작성할 수 있다.

시간 기반 실행: 

Lambda 함수를 주기적으로 실행하도록 스케줄링할 수 있으며, 이를 통해 일정한 간격으로 작업을 수행할 수 있다.

액세스 제어 및 보안: 

Lambda 함수는 AWS Identity and Access Management (IAM)을 사용하여 액세스 제어를 구성하고, 코드와 데이터를 보호하기 위해 AWS Key Management Service (KMS)와 통합할 수 있다.

지연 및 비용 최적화:

Lambda 함수는 사용자의 코드가 실행되는 데 걸리는 시간에 대해서만 요금을 지불하므로 코드 실행이 발생하지 않는 경우 비용이 발생하지 않는다.

AWS Lambda는 이벤트 기반 아키텍처, 서버리스 마이크로서비스, 데이터 처리, 이미지 리사이징, 로그 분석, 웹 애플리케이션 백엔드 및 다양한 서버리스 애플리케이션을 빌드하고 실행하기 위한 강력한 서비스로 사용된다.

함수로 분리된 작은 단위의 코드를 작성하여 개발자가 더 빠르게 애플리케이션을 구축하고 배포할 수 있도록 도와준다.

 

 

CloudFront

컨텐츠 전송 네트워크(CDN) 서비스로, 웹 애플리케이션과 컨텐츠를 전 세계 사용자에게 빠르고 안정적으로 전달하기 위한 분산 네트워크를 제공하며 정적 및 동적 컨텐츠, 비디오 스트리밍, API 호출 및 기타 웹 자산을 가속화하고 보호하는 데 사용된다.

캐싱: 

CloudFront는 엣지 위치(Edge Location)에서 캐싱을 사용하여 정적 및 동적 컨텐츠를 저장하고 사용자에게 가장 가까운 위치에서 컨텐츠를 서빙해서 웹 페이지 로딩 시간을 크게 줄일 수 있다.

엣지 위치 (Edge Locations): 

전 세계에 분산된 엣지 위치를 갖고 있으며, 사용자에게 빠르게 컨텐츠를 제공하기 위해 가까운 엣지 위치를 사용한다. 

현재 전 세계에 수백 개 이상의 엣지 위치가 있습니다.

원본 (Origin): 

CloudFront는 원본 서버로부터 컨텐츠를 가져온다.

이 원본은 Amazon S3 버킷, EC2 인스턴스, Lambda 함수, API Gateway 및 사용자 정의 웹 서버 등 다양한 원본 유형을 지원한다.

보안 및 인증: 

CloudFront는 DDoS 공격 방어, SSL/TLS 암호화, 서명된 URL 및 쿠키 기반 인증과 같은 다양한 보안 기능을 제공하여 컨텐츠의 안전성을 유지한다.

지연 시간 및 성능 최적화: 

CloudFront는 네트워크 최적화 및 지연 시간 최소화를 통해 사용자 경험을 향상시킨다. 

엣지 위치를 사용하여 사용자에게 더 빠른 응답 시간을 제공한다.

모바일 최적화: 

모바일 사용자를 대상으로 컨텐츠를 최적화하고 사용자 에이전트 및 기기 유형별로 다른 버전의 컨텐츠를 제공할 수 있다.

비용 효율성:

트래픽 양에 따라 과금되며, 사용한 만큼만 지불하게 됩니다. 또한 AWS와 통합되어 사용자가 편리하게 관리할 수 있다.

 

 

 

 

 

 

 

Route 53

관리형 도메인 네임 시스템(DNS) 서비스로서 도메인 이름을 등록하고 관리하며, DNS 레코드를 설정하여 웹 애플리케이션 및 인프라스트럭처를 구성할 수 있다.

도메인 등록 및 관리: 

Route 53을 사용하여 도메인 이름을 등록하고 관리할 수 있다. 

이를 통해 웹 사이트, 애플리케이션 또는 서비스에 대한 사용자 지정 도메인을 설정할 수 있다.

DNS 라우팅: 

Route 53을 사용하여 다양한 형태의 DNS 라우팅을 설정할 수 있다.

이를 통해 사용자 트래픽을 여러 엔드포인트 또는 리전으로 분산하고, 고가용성을 제공하며, 부하 분산을 수행할 수 있다.

상태 확인 및 헬스 체크: 

Route 53을 사용하여 엔드포인트(예: 웹 서버 또는 로드 밸런서)의 상태를 주기적으로 확인하고, 비정상적인 상태에서 자동으로 트래픽을 라우팅할 수 있다.


비용 효율성: 

Route 53의 요금은 사용한 리소스 및 트래픽 양에 따라 과금되며 요금 계산은 트래픽, 호스트 존, 도메인 등을 기반으로 한다.

전환 기능: 

기존 DNS 서비스에서 Route 53으로 도메인을 마이그레이션하거나 Route 53에서 다른 DNS 서비스로 마이그레이션하는 기능을 제공한다.

HTTPS 지원: 

Route 53을 사용하여 SSL/TLS 인증서를 설정하고 HTTPS로 암호화된 트래픽을 지원할 수 있다.

Amazon Route 53은 웹 애플리케이션의 가용성과 신뢰성을 향상시키고, 글로벌 사용자에게 빠르고 안정적인 서비스를 제공하는 데 중요한 역할을 한다.  또한 다양한 DNS 기능을 사용하여 트래픽을 관리하고 DNS 관리를 간편하게 수행할 수 있다.

 

 

ACM & ELB(ALB)

ACM (AWS Certificate Manager)과 ELB (Elastic Load Balancer, 특히 ALB, Application Load Balancer)는 웹 애플리케이션 및 웹 사이트를 운영하고 안전하게 배포하는 데 사용되는 중요한 서비스이다.


AWS Certificate Manager (ACM):

SSL/TLS 인증서 관리: ACM은 SSL/TLS 인증서를 생성, 발급, 관리 및 갱신하는 데 사용된다. 

무료로 제공되는 공인 인증 기관 (CA)에서 발급한 공인 인증서를 사용하거나 ACM이 제공하는 무료 인증서를 사용할 수 있다.

자동 갱신:

ACM은 인증서의 자동 갱신을 지원하므로 인증서 만료로 인한 문제를 방지할 수 있다.

통합: 

ACM은 다른 AWS 서비스와 쉽게 통합된다. 특히, ELB (Elastic Load Balancer) 및 CloudFront와 함께 사용할 수 있다.

보안 및 관리: 

ACM은 비밀 키와 같은 중요한 정보를 안전하게 저장하고 관리하며 인증서 사용 현황을 모니터링할 수 있는 대시보드를 제공한다.



Elastic Load Balancer (ELB)/  Application Load Balancer(ALB)


로드 밸런싱:

ELB는 트래픽을 여러 EC2 인스턴스 또는 컨테이너로 분산하여 애플리케이션의 가용성과 확장성을 향상시킨다.

Layer 7 로드 밸런서 (ALB): 

ALB는 Layer 7 (애플리케이션 계층)에서 동작하며 HTTP 및 HTTPS 트래픽을 기반으로 요청을 분배하고, 

URL 경로 기반 라우팅, 호스트 기반 라우팅, 컨텐츠 기반 라우팅 등 고급 로드 밸런싱 기능을 제공한다.

Auto Scaling와 통합: 

ELB는 Auto Scaling 그룹과 연동하여 자동으로 EC2 인스턴스를 추가하거나 제거하여 트래픽에 따른 확장을 지원한다.

보안:

ELB는 SSL/TLS 암호화 및 ACM과 통합하여 보안을 강화한다.

모니터링: 

ELB는 CloudWatch와 통합되어 로드 밸런서 성능 및 상태 모니터링을 제공한다.

ACM과 ELB (특히 ALB)는 웹 애플리케이션의 성능, 가용성 및 보안을 개선하는 데 중요한 역할을 한다.

ACM은 SSL/TLS 인증서 관리를 단순화하고 보안을 강화하며, ELB (특히 ALB)는 트래픽을 효과적으로 분산하여 애플리케이션을 안정적으로 운영할 수 있게 해준다.

이러한 서비스를 사용하면 AWS에서 호스팅하는 애플리케이션을 보다 신뢰성 있게 구축하고 관리할 수 있다.

 

 

 

ECR

Amazon Elastic Container Registry (Amazon ECR)는 완전 관리형 컨테이너 이미지 레지스트리 서비스이다.

Amazon ECR을 사용하면 Docker 컨테이너 이미지를 저장, 관리 및 배포할 수 있으며, Amazon Elastic Kubernetes Service (EKS), Amazon ECS (Elastic Container Service), 및 자체 호스트된 Kubernetes 클러스터와 같은 컨테이너 오케스트레이션 서비스와 통합하여 사용할 수 있다.

완전 관리형 서비스: 

Amazon ECR은 이미지 저장, 관리, 보안, 백업, 복원 및 확장과 같은 모든 이미지 관리 작업을 자동화하므로 사용자는 이미지 레지스트리의 운영과 관리에 대해 걱정하지 않고 개발에 집중할 수 있다.

Docker 호환: 

Amazon ECR은 Docker 이미지 포맷을 사용하므로 기존 Docker 도구와 통합이 원활하며, 

Docker CLI (Command Line Interface)를 사용하여 이미지를 푸시하고 풀 수 있다.

보안 및 액세스 제어: 

ECR은 AWS Identity and Access Management (IAM)과 통합하여 이미지 레지스트리에 대한 액세스를 제어하고 

IAM 롤을 통해 컨테이너 서비스에 액세스 권한을 부여할 수 있다.

또한 이미지 스캔을 통해 보안 취약성을 식별하고 수정할 수 있다.

가용성과 내구성: 

ECR은 여러 가용 영역에 컨테이너 이미지를 저장하여 고가용성과 내구성을 제공하며,

이미지 복제를 사용하여 지역 간 이미지 복사를 자동화할 수 있다.

버전 관리: 

ECR은 이미지 버전 관리를 지원하여 이미지의 변경 이력을 추적하고, 롤백 및 테스트를 쉽게 수행할 수 있다.

스케일링 및 통합: 

Amazon ECR은 Amazon ECS, Amazon EKS 및 Docker Compose와 함께 사용할 수 있으며, 

컨테이너 오케스트레이션 플랫폼과 시스템에서 원활하게 통합된다.

비용 효율성: 

Amazon ECR의 요금은 저장된 이미지의 양과 데이터 전송에 따라 과금되므로 사용한 리소스에 대해서만 비용을 지불하게 된다.

Amazon Elastic Container Registry는 컨테이너 이미지 관리를 단순화하고 컨테이너 기반 애플리케이션을 더 효율적으로 운영할 수 있도록 도와주는 중요한 서비스이다. 

컨테이너 이미지를 안전하게 보관하고 배포할 때 사용할 수 있으며, AWS 클라우드 환경에서 높은 가용성과 안정성을 제공한다.

 

 

 Docker

테이너 기반 가상화 기술을 제공하는 오픈 소스 플랫폼으로, 소프트웨어 애플리케이션을 격리된 환경에서 실행하고 배포하는 데 사용된다. 

Docker를 사용하면 애플리케이션과 그 종속성을 패키징하고, 이러한 패키지를 컨테이너로 실행할 수 있으며, 다양한 환경에서 동일한 방식으로 작동하도록 보장할 수 있다. 

 

주요 개념

이미지 (Image): 

Docker 이미지는 애플리케이션 실행에 필요한 모든 파일 및 설정을 포함하는 패키지이다.

이미지는 읽기 전용이며, 컨테이너를 시작할 때 사용된다.

Docker Hub와 같은 레지스트리에서 이미지를 공유하고 다운로드할 수 있다.

컨테이너 (Container): 

컨테이너는 Docker 이미지의 인스턴스이다.

이미지를 실행하면 컨테이너가 생성되고, 컨테이너 내부에서 애플리케이션 및 종속성이 격리되어 실행된다.

컨테이너는 가상 머신처럼 동작하지만 더 가벼우며 빠르게 시작된다.

Dockerfile: 

Dockerfile은 Docker 이미지를 빌드하기 위한 빌드 스크립트이다. 

Dockerfile에는 이미지의 기본 구성, 의존성, 환경 설정 및 애플리케이션 실행 명령이 정의된다.

 


주요 특징

가상화 및 격리: 

Docker는 컨테이너를 사용하여 애플리케이션 및 그 종속성을 격리된 환경에서 실행한다. 

이로써 여러 애플리케이션을 동일한 호스트에서 분리된 환경에서 실행할 수 있다.

효율성: 

Docker는 컨테이너를 사용하여 빠르게 시작하고 종료할 수 있으며, 더 적은 시스템 리소스를 사용한다.

이는 개발 및 배포 프로세스를 효율적으로 만든다.

이식성: 

Docker 컨테이너는 호스트 환경과 독립적이므로, 개발 환경, 테스트 환경 및 프로덕션 환경 간의 이식성을 보장한다.

자동화: 

Docker는 이미지 및 컨테이너 빌드, 배포 및 관리를 자동화할 수 있는 도구와 통합된다. 

이를 통해 CI/CD 파이프라인과 통합하여 개발 및 배포 프로세스를 자동화할 수 있다.


Docker는 현대적인 애플리케이션 개발 및 배포의 핵심 요소 중 하나로 인정받고 있으며,  다양한 운영 체제와 클라우드 환경에서 사용되고 있다. 

개발자 및 운영 팀은 Docker를 사용하여 애플리케이션을 효율적으로 관리하고, 다양한 환경에서 안정적으로 실행할 수 있다.

 

CI/CD : Github Actions

GitHub의 통합 지속적인 개발 및 배포(CI/CD) 서비스로, 소프트웨어 개발 프로세스를 자동화하고 효율적으로 관리할 수 있도록 해주는 도구이다. 

GitHub Actions를 사용하면 코드 변경 사항을 자동으로 테스트하고 빌드하며, 배포 파이프라인을 설정하고 관리할 수 있다.



워크플로우 (Workflows): 

GitHub Actions는 워크플로우라고 하는 CI/CD 파이프라인을 정의하고 실행할 수 있다. 

워크플로우는 YAML 파일로 정의되며, 코드 리포지토리 내의 .github/workflows 디렉터리에 저장된다.

이벤트 기반 실행: 

워크플로우는 코드 리포지토리 내에서 발생하는 다양한 이벤트(예: 코드 푸시, 이슈 생성, 풀 리퀘스트 생성 등)를 트리거로 실행된다.

이러한 이벤트에 응답하여 워크플로우를 실행할 수 있다.

테스트 및 빌드: 

GitHub Actions를 사용하여 코드를 자동으로 테스트하고, 빌드하고, 패키징하는 단계를 정의할 수 있다. 

이를 통해 코드 품질을 유지하고 무결성을 검증할 수 있다.

다중 환경 및 플랫폼 지원: 

워크플로우는 다양한 환경 및 플랫폼에서 실행할 수 있으며, Linux, macOS, Windows 및 커스텀 도커 컨테이너를 지원한다.

커뮤니티 액션 (Community Actions): 

GitHub Actions 커뮤니티에서 제공하는 다양한 액션을 사용하여 워크플로우를 확장하고 자신만의 사용자 정의 액션을 만들 수 있다.

시크릿 (Secrets): 

민감한 데이터(예: API 키, 액세스 토큰)를 안전하게 보호하고 워크플로우에서 사용할 수 있도록 GitHub Secrets를 사용할 수 있다.

결과 및 알림: 

워크플로우의 실행 결과를 확인하고, 성공 또는 실패에 대한 알림을 설정할 수 있어 Slack, 이메일 등 다양한 알림 메커니즘을 지원한다.

배포 및 자동화: 

워크플로우를 사용하여 서버에 코드를 자동으로 배포하고, 인프라 변경을 자동화할 수 있다.

GitHub Actions를 통해 개발자 및 개발 팀은 지속적인 통합 및 지속적인 배포를 구현하고 소프트웨어 개발 프로세스를 자동화하여 개발 및 배포의 속도를 향상시킬 수 있다. 이는 코드의 품질을 향상시키고 버그를 빠르게 식별하여 해결하는 데 도움이 된다.