데브옵스& 인프라
CI/CD : Github Actions
doamin 구매 : 가비아
API 통신 테스트 : Postman
API 명세서 : Swagger
Deploy: AWS(IAM,EC2,CloudFront, S3, Route 53, RDS, ELB(ALB),ACM,ECR), Docker
.
.
.
.
우선 이번 데브옵스 & 인프라 파트에서 사용할 언어 및 프레임워크, 인프라들이다.
파트 별로 왜 해당 언어인프라들을 사용했는지를 기록해보자.
.
.
우선 이번에 적는 기술 스택과 아키텍쳐중 절반 정도는 사용해 보지 않고
프로젝트를 구상하는 과정에서 도입하기로 결정한 것들이 절반이다.
실질적 1차 개발 이후 첫 배포 때 다시 사용법을 기록하며 이후 업데이트 포스팅을 할 계획이다.
Deploy : Docker
테이너 기반 가상화 기술을 제공하는 오픈 소스 플랫폼으로, 소프트웨어 애플리케이션을 격리된 환경에서 실행하고 배포하는 데 사용된다.
Docker를 사용하면 애플리케이션과 그 종속성을 패키징하고, 이러한 패키지를 컨테이너로 실행할 수 있으며,
다양한 환경에서 동일한 방식으로 작동하도록 보장할 수 있습니다.
주요 개념 :
이미지 (Image):
Docker 이미지는 애플리케이션 실행에 필요한 모든 파일 및 설정을 포함하는 패키지이다.
이미지는 읽기 전용이며, 컨테이너를 시작할 때 사용된다.
Docker Hub와 같은 레지스트리에서 이미지를 공유하고 다운로드할 수 있다.
컨테이너 (Container):
컨테이너는 Docker 이미지의 인스턴스이다.
이미지를 실행하면 컨테이너가 생성되고, 컨테이너 내부에서 애플리케이션 및 종속성이 격리되어 실행된다.
컨테이너는 가상 머신처럼 동작하지만 더 가벼우며 빠르게 시작된다.
Dockerfile:
Dockerfile은 Docker 이미지를 빌드하기 위한 빌드 스크립트이다.
Dockerfile에는 이미지의 기본 구성, 의존성, 환경 설정 및 애플리케이션 실행 명령이 정의된다.
레지스트리 (Registry):
Docker 이미지를 저장하고 공유하기 위한 중앙 저장소이다.
Docker Hub는 가장 널리 사용되는 공개 레지스트리 중 하나이지만,
조직이나 개발 팀은 자체 레지스트리를 구축하여 이미지를 관리할 수도 있다.
주요 특징:
가상화 및 격리:
Docker는 컨테이너를 사용하여 애플리케이션 및 그 종속성을 격리된 환경에서 실행한다.
이로써 여러 애플리케이션을 동일한 호스트에서 분리된 환경에서 실행할 수 있다.
효율성:
Docker는 컨테이너를 사용하여 빠르게 시작하고 종료할 수 있으며, 더 적은 시스템 리소스를 사용한다.
이는 개발 및 배포 프로세스를 효율적으로 만든다.
이식성:
Docker 컨테이너는 호스트 환경과 독립적이므로, 개발 환경, 테스트 환경 및 프로덕션 환경 간의 이식성을 보장한다.
자동화:
Docker는 이미지 및 컨테이너 빌드, 배포 및 관리를 자동화할 수 있는 도구와 통합된다.
이를 통해 CI/CD 파이프라인과 통합하여 개발 및 배포 프로세스를 자동화할 수 있다.
생태계:
Docker는 다양한 도구, 라이브러리 및 서비스와 통합되는 풍부한 생태계를 제공한다.
이는 애플리케이션 개발 및 운영을 간소화하고 확장성을 높인다.
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를 통해 개발자 및 개발 팀은 지속적인 통합 및 지속적인 배포를 구현하고
소프트웨어 개발 프로세스를 자동화하여 개발 및 배포의 속도를 향상시킬 수 있다.
이는 코드의 품질을 향상시키고 버그를 빠르게 식별하여 해결하는 데 도움이 된다.
.
.
.
.
API 통신 테스트 : Postman
API 개발 및 테스트를 위한 인기 있는 협업 도구 및 클라이언트이다.
API 엔드포인트를 쉽게 테스트하고 문서화하며, 팀과 협업하여 API 개발 및 테스트 프로세스를 효율적으로 관리할 수 있다.
Postman의 주요 기능:
API 요청 생성:
Postman을 사용하여 HTTP 또는 HTTPS 프로토콜을 사용하는 API 요청을 생성할 수 있다.
GET, POST, PUT, DELETE 및 기타 HTTP 메서드를 지원한다.
요청 헤더 및 본문 설정:
요청 헤더를 정의하고, JSON, XML 또는 기타 형식의 요청 본문을 작성하여 API 요청을 구성할 수 있다.
환경 변수와 변수 활용:
Postman은 환경 변수를 사용하여 다양한 환경에서 동일한 요청을 테스트하고 변수를 활용하여 동적 데이터를 처리할 수 있다.
컬렉션 및 폴더:
API 요청을 논리적으로 그룹화하고, 컬렉션 및 폴더를 사용하여 요청을 구성 및 정리할 수 있다.
테스트 스크립트 작성:
Postman은 JavaScript를 사용하여 요청 후에 실행할 테스트 스크립트를 작성할 수 있는 기능을 제공한다.
이를 통해 응답을 검증하고 테스트 결과를 확인할 수 있다.
자동화와 CI/CD 통합:
Postman은 API 테스트를 자동화하고, CI/CD 파이프라인과 통합하여
지속적인 통합 및 지속적인 배포 환경에서 API 테스트를 실행할 수 있다.
모니터링 및 협업:
Postman은 API 모니터링을 제공하고, 팀원과 협업하여 API 요청을 공유하고 설명을 추가할 수 있는 기능을 제공한다.
.
.
.
.
API 명세서 : Swagger
API 개발 및 문서화를 위한 오픈 소스 프레임워크로, RESTful API를 설계, 빌드 및 문서화하는 데 사용된다.
API 명세서를 자동으로 생성하고 관리하는 기능을 제공하여 개발자와 사용자가 API를 이해하고 사용하는 데 도움을 준다.
Swagger는 현재 OpenAPI Specification (이전 명칭은 Swagger Specification)으로도 알려져 있다.
API 문서화:
Swagger는 API의 엔드포인트, 요청 및 응답 형식, 헤더, 파라미터 및 예제를 문서화하는 데 사용된다.
이 문서화된 정보는 개발자 및 사용자에게 API의 사용 방법을 설명하는 데 유용하다.
자동 명세서 생성:
Swagger는 API의 기능과 엔드포인트를 자동으로 수집하고, 이 정보를 사용하여 API 명세서를 생성한다.
이는 수동으로 API 명세서를 작성하는 번거로움을 줄여준다.
시각화 및 테스트:
Swagger UI를 사용하여 API 명세서를 시각적으로 표시하고, 이를 통해 API를 테스트하고 상호 작용할 수 있다.
사용자는 Swagger UI에서 API 엔드포인트를 브라우징하고 요청을 보내며 응답을 확인할 수 있다.
표준화된 명세서:
Swagger는 RESTful API의 명세를 표준화하고, 여러 개발 플랫폼 및 언어에서 사용할 수 있도록 지원한다.
이로써 API를 사용하는 클라이언트 및 서버 개발자 간의 협업이 간소화된다.
다양한 언어 지원:
Swagger 명세서는 YAML 또는 JSON 형식으로 작성되어 다양한 프로그래밍 언어 및 도구에서 사용할 수 있다.
버전 관리:
Swagger 명세서는 API의 다양한 버전을 관리하고 문서화할 수 있으므로 API 업데이트 및 호환성을 관리하는 데 도움이 된다.
보안 및 인증 지원:
Swagger는 API의 보안 및 인증 설정을 명시적으로 정의하고 문서화할 수 있으며, 사용자에게 API 접근 권한과 제한을 설명한다.
Swagger (또는 OpenAPI Specification)는 개발자와 사용자 간의 원활한 커뮤니케이션을 지원하며,
API의 문서화와 관리를 효율적으로 처리할 수 있도록 도와준다.
많은 개발 플랫폼과 도구에서 Swagger를 지원하고 있으며,
개발 및 테스트 프로세스를 단순화하고 API의 신뢰성을 높이는 데 도움이 된다.
'캡스톤 설계 [건물별 소통 플랫폼 BBC] > 기술 스택 및 아키텍처' 카테고리의 다른 글
네카라쿠배당토 필수 역량과 우대 사항 (0) | 2023.09.19 |
---|---|
IOS/Andriod 기술 스택 및 아키텍쳐 (0) | 2023.09.19 |
데브옵스& 인프라 기술스택 및 아키텍쳐 [1] (0) | 2023.09.19 |
프론트엔드 기술스택 및 아키텍처 (0) | 2023.09.19 |
백엔드 기술스택 및 아키텍쳐 (0) | 2023.09.18 |