배포 (9) 썸네일형 리스트형 CI / CD 1. CI / CD (1) 개발 단계부터 배포까지 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법 (2) 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포 (3) 새로운 코드 통합으로 개발 및 운영에 발생하는 문제를 해결하기 위한 솔루션 (4) CI(Continuous Integration): 지속적인 통합 (5) CD(Continuous Delivery or Continuous Deployment) : 지속적인 서비스 제공, 지속적인 배포 (6) 지속적인 배포 : 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스 하는 것 (7) 운영 프로세스 과부하 해결 2. CI / CD 툴 (1) Jenkins : 간단한 CI 서버에서 완전한 CD 허브에.. Git Workflow 1. Git Workflow (1) 하나의 브랜치 (2) master 브랜치는 배포할 준비된 상태만 올리고 master 브랜치에서 나온 dev 브랜치에서 개발 개발을 마치고, 프로덕션에 배포할 준비가 되면 master 브랜치와 다시 합치게 됨 (merge) (3) 더 세분화 된 방식은 dev 브랜치에서 기능별로 feature 브랜치를 빼서 개발하고 기능 개발이 완료되면 dev 브랜치에 합침 2. hotfix 브랜치 (1) 긴급하게 에러를 고치기 위해 만드는 브랜치 (2) 마스터 브랜치에서 바로 만들어서 프로덕션에서 생긴 이슈를 고치고 master 브랜치로 합쳐서 배포할 수 있도록 함 3. release 브랜치 (1) dev 브랜치에서 feature 브랜치들을 만들어서 기능들을 모두 개발하고 합침 (2) .. Serverless Service 1. 서버리스 서비스 (1) 서버가 없다는 뜻으로 백엔드 서버가 존재하지 않음 (2) Cloud Function을 이용하여 함수 단위로 배포를 진행하는 것 (3) 브라우저에서 요청 -> Cloud Function 상의 함수가 실행됨 -> 해당 함수를 통해 DB에 접속하여 데이터 등록 및 조회 2. 서버리스 서비스의 장점 (1) 백엔드 서버를 사용하여 서비스 할때에 비해 요금이 적게 소요됨 => 서버리스 서비스는 함수가 실행될 때만 비용 부과 (2) 접속량이 많지 않을 때는 서버리스 서비스를 사용하면 비용 절감 효과가 있음 3. 서버리스 서비스의 단점 (1) 24시간 서비스가 켜져 있는 것이 아니라 요청이 들어올 때마다 서버가 켜지게 됨 (2) 서버가 켜지는데 시간이 걸려서 요청이 느려짐 => cold s.. Kubernetes 1. Kubernetes (쿠버네티스) (1) 쿠버네티스는 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구 (2) 비슷한 도구로는 메소스, 도커스웜 등이 있음 (3) 컨테이너 오케스트레이션 도구라고도 함 (4) 많은 수의 컨테이너를 협조적으로 연동시키기 위한 통합 시스템 (5) 컨테이너를 다루기 위한 API 및 명령행 도구 등이 함께 제공됨 (6) 도커 호스트 관리, 서버 리소스의 여유를 고려한 컨테이너 배치, 스케일링, 여러 개의 컨테이너 그룹에 대한 로드 밸런싱, 헬스 체크 등의 의 기능을 갖추고 있음 (7) 쿠버네이트 리소스 : 노드, 네임스페이스, 파드 2. Cluster (1) Kubernetes cluster: 쿠버네티스의 여러 리소스를 관리하기 위한 집합체 (2) Node : 클러스터.. Firewall(DMZ) / VPC 1. Firewall (1) 방화벽 은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트랙픽을 모니터링하고 제어하는 네트워크 보안 시스템 (2) 방화벽은 일방적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성 (3) 서로 다른 네트워클르 지나는 데이터를 허용하거나 거부하거나 검열 ㅅ줭하는 하드웨어나 소프트웨어 장치 2. Firewall의 역할 (1) 신뢰 수준이 다른 네트워크 구간들 사이에 놓여서 신뢰 수준이 낮은 네트워크로부터 오는 해로운 트래픽이 신뢰 수준이 높은 네트워크로 오지 못하게 막는 것 (2) 신뢰 높은 구간 : 내부 네트워크. 신뢰 낮은 구간: 인터넷 구간, 외부 네트워크 구간 (3) 외부에 서비스를 제공하는 서버들을 위한 DMZ 구간이 있으.. SSL(TLS) / HTTPS 1. SSL / TLS (1) SSL/TLS 인증서는 시스템에서 ID를 확인하고 이후에 Secure Socket Layer / 전송 계층 보안(SSL/TLS) 프로토콜을 사용하여 다른 시스템에 대한 암호화된 네트워크 연결을 설정할 수 있도록하는 디지털 객체 (2) 인증서는 퍼블릭 키 인프라(PKI)로 알려진 암호화 시스템 내에서 사용 (3) 양쪽 모두가 인증 기관으로 알려진 타사를 신뢰하는 경우, PKI는 한쪽에서 인증서를 사용하여 다른 쪽의 자격 증명을 설정할 수 있는 방법을 제공 (4) SSL/TLS 인증서는 네트워크 통신을 보호하고 인터넷을 통한 웹 사이트 및 프라이빗 네트워크의 리소스에 대한 아이덴티티를 설정하는 역할 2. SSL/TLS 의 중요성 (1) 개인 데이터 보호 브라우저는 웹사이트의 S.. DNS / Load Balancer 1. DNS (1) DNS(Domain Name System) : 웹에서 도메인을 정리하고 확인하는 전화번호부와 같은 역할 (2) 'www.google.com'과 같은 웹 주소는 DNS를 통해 '74.125.19.147'과 같이 사이트를 호스팅하는 컴퓨터의 실제 IP 주소로 변환 2. DNS Record (1) 도메인에 관한 설정을 하기 위해 사용되는 일련의 문자들 (2) MX 레코드 메일 교환 레코드로 이메일을 도메인의 사용자 계정을 호스팅하는 서버로 전송 한 도메인 내에서 우선순위를 달리하여 여러 MX레코드를 정의할 수 있음 우선순위대로 레코드가 사용됨 (3) TXT 레코드 도메인 외부 소스에 다양한 목적으로 사용될 수 있는 텍스트 정보를 제공하는 DNS 레코드 도메인 소유권을 인증하고 SPF, DK.. TDD 1. TDD (1) TDD(Test Driven Development): 테스트 주도 개발 (2) 반복 테스트를 이용한 소프트웨어 방법론 (3) 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현 (4) 짧은 개발 주기의 반복에 의존하는 개발 프로세스 (5) 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중시 2. 테스트의 종류 (1) unit test(단위 테스트) 응용 프로그램에서 함수 처럼 가장 작은 단위을 테스트 (2) integration test(통합 테스트) 유닛들을 모아서 함께 테스트, 서버의 구성요소들이 함께 잘 작동되는지 테스트 (3) e2e(end-to-end) test.. Microservice 1. 모놀리식 아키텍쳐 (Monolithic Architecture) (1) 여러 작고 중요한 모듈들을 하나로 묶어서 배포하는 방식 (2) 하나의 프로젝트를 개발하고 테스트하고 빌드하기 때문에 단순 (3) 여러 모듈들이 함께 있어 작은 문제에도 다른 부분에 영향 (4) 서비스가 커질경우 하나의 프로젝트로 함께 묶는것이 버거워지고 복잡 2. 마이크로서비스 아키텍쳐(Microservice Architecture) (1) 모놀리식 아키텍쳐의 단점을 해결하기 위해 나온 아키텍쳐 (2) 한 프로젝트를 여러 작은 서비스로 분리하여 개발하고 운영, 베포하는 방법 (3) 여러 모듈을 분리했기 때문에 팀별로 독립적으로 개발 가능 (4) 서비스 운영시 발생하는 장애에 대해 좀 더 자유로워 질 수 있음 3. NestJS에서.. 이전 1 다음