반응형

분류 전체보기 128

IaC, Terraform 기초 (Infrastructure as Code, 코드형 인프라, Terraform)

IaC 란? - Infrastructure as Code (코드형 인프라) - 코드로 클라우드 Infrastructure를 구성할 수 있음 (생성, 수성, 삭제 등을 자동화 함) - Infrastructure의 설계도 IaC 장점 - 인프라 구성 자동화 가능 - 휴먼에러 방지 - 쉽게 공유가능 - 버전 관리 용이 - 코드와 현재 상태 비교 가능 -> 인프라 상태 변경에 따른 위험 분석 및 검증 가능 - 개발자가 스스로 배포하고 인프라 통제 할 수 있는 환경 구성 가능 프로비저닝 vs 배포 vs 오케스트레이션 프로비저닝 - 클라우드 서비스를 시작하고 구성하는 것 - 시스템, 데이터 및 소프트웨어로 서버를 준비하고 네트워크 작동을 준비 - Puppet, Ansible 등과 같은 구성 관리 도구를 사용하여 서..

IaC/Terraform 2023.02.07

[Mac OS]API Gataway 와 서버리스 어플리케이션

#1. API Gateway - Lambda 배포 1. Lambdda 함수와 API Gateway 세팅을 위한 SAM 사용 => SAM 이란 - Serverless Application Model 는 서버리스 어플리케이션을 빌드하는데 사용할 수 있는 오픈 소스 AWS 프레임워크 SAM setting (Lambda to DynamoDB) https://serverlessland.com/patterns/lambda-dynamodb Serverless Land Your resource for learning serverless technology. serverlessland.com #Download git clone https://github.com/aws-samples/serverless-patterns/ ..

클라우드/AWS 2023.02.04

독립적 서비스 구성 - AWS Lambda, API Gateway

AWS Lambda 란? - AWS 가 제공하는 서버리스 Faas 솔루션 - 함수의 인스턴스를 실행하여 이벤트 처리 Faas 란? - 개발자가 자체 인프라를 유지관리할 필요 없이 어플리케이션 패키지를 빌드,실행,관리 할 수 있게 해주는 일종의 클라우드 컴퓨팅 서비스 - stateless 컨테이너에서 실행되는 이벤트 기반 컴퓨팅 실행 모델 - 자체 서버 시스템이나 수명이 긴 서버 어플리케이션을 관리하지 않고 백앤드 코드를 실행함 => 서버를 프로비저닝 하거나 관리할 필요 없이 작성한 코드를 백앤드 서비스로서 배포할 수 있게 해줌 - 런타임(node.js, Java 등)에 대한 사전 준비가 필요하지 않음 - 상태 및 실행 기간과 관련하여 상당한 아키텍처 제한이 있음 - 수평적 확장은 완전 자동적, 탄력적이며..

DevOps/DevOps 2023.02.02

API 디자인, 프로세스 간 통신(Inter-process communication, IPC ,마이크로서비스 간의 통신)

프로세스 간의 통신 - 서비스와 서비스간의 통신을 위해 인터페이스가 필요 - 인터페이스의 요구 방식 대로 커뮤니케이션 - 서버/클라이언트 아키텍처에서 HTTP 프로토콜을 이용하여 메소드 및 엔드포인트로 구성된 REST API를 이용하여 통신 동기/비동기 - HTTP 프로토콜은 기본적으로 TCP or UDP 연결을 만든다 -> 요청에 따라 즉시 응답이 오는 형태이므로 동기적 응답 - 비동기 서비스의 작업은 단방향 알림으로 푸쉬알림의 예가 있음 1:1 및 다대다 통신 - 뉴스에 대한 구독 형식 서비스는 1:1이 아닌 1대다 커뮤니케이션 방식을 취합니다 - HTTP는 1:1 통신이다 -> 여러 클라이언트에게 동시에 응답을 전달하지 않음 -> 여러번의 1:1 커뮤니케이션임 데이터 교환 포맷 JSON - JSON..

DevOps/DevOps 2023.02.01

마이크로서비스 란? (구조 및 특징, 아키텍처 구현, 서버리스)

마이크로서비스 - 마이크로 아키텍처 라고도 함 - 유지보수에 유리하고, 테스트 가능해야 함 - 느슨하게 결합되어야 함 => 시간이 지남에 따라 서비스가 복잡해지면 더 작은 서비스로 분할할 수 있음 - 독립적으로 배포 가능함 => 다른 서비스의 기능에 영향을 주지 않음 => 해당 서비스의 코드 및 구현을 다른 서비스와 공유할 필요 없음 - 비즈니스 역량을 중심으로 구성해야 함 => 모든 규모에 부합하는 접근 방식이 아닌 각 팀별 특정 문제에 대한 적합한 도구를 자유롭게 선택 가능 - 작은 팀에 의해 소유됨 => 소규모 컨텍스트 내에서 활동하며 더 독립적이면서 신속한 업무처리 가능, 개발주기 시간 단축 서비스로서의 컴포넌트화 컴포넌트 - 독립적으로 대체하거나 업그레이드 가능한 소프트웨어 단위 컴포넌트화 - ..

DevOps/DevOps 2023.01.30

[Mac OS]AWS Certificate Manager, Route53, CloudFront (AWS ACM, ACM 인증서, Route 53)

Route 53 을 통해 한 도메인 라우팅 정책 설정 시 ACM을 필요로 한다. 도메인에 대한 인증서가 있어야 안전한 라우팅이 가능하다. 1. AWS 콘솔창에서 Certification Manager 검색 2. 우측상단 요청 선택 3. 인증서 유형 선택 4. 도메인 이름 작성 5. 검증방법 및 키 알고리즘 선택 6. 인증서 발급 상태 확인 7. 인증서 ID -> Route 53에서 레코드 생성 클릭 -> 인증서 발급 완료까지 대기 8. 발급상태 확인 - 처음엔 한 2분안에 인증서가 발급되었음 - 두번째 발급 부터 1시간이 넘게 걸린 경우가 있었음 9. Route53 레코드 생성 10. 레코드 생성 내용 입력 - 별칭 체크 - 트래픽 라우팅 대상 체크 -> 레코드 별칭 선택 (ALB, CloudFront ..

클라우드/AWS 2023.01.25

[Mac OS]ECS exec format error (ECR, ECS 오류, task, cluster)

ECS cluster를 통해 service 배포 중 exec format error 이라는 에러가 떴다. Mac M1 환경에서 빌드된 이미지를 통해 Task definition 을 진행하여 서비스를 배포시도를 하고 있는 상황이다. (git 으로 code push 시 Github Action 을 통한 이미지 자동 빌드 및 ECR로 push) 오류 원인 - Task Definition 시 운영체제/아키텍처 선택 오류 Fargate 는 x86 아키텍쳐만 지원하므로 Mac M1 환경에서 이미지를 빌드할 때 아래와 같은 코드 수정이 필요하다. #FROM node:16 //x86 FROM --platform=linux/amd64 node:16-alpine // ARM64 임시로 도커 빌드 시 platform 을 명..

클라우드/AWS 2023.01.25

[Mac OS]AWS ECS를 이용한 컨테이너화 된 앱 배포(WAS, AWS ECR, AWS ECS)

** AWS ECR에 앱 도커이미지가 준비되어 있어야함 (was 파일 준비했음) https://chance-story.tistory.com/28 Server Container화 & ECR Registry Push (AWS ECR, docker, Elastic Container Registry) 1. Fastify CLI 설치 % npm i --global fastify-cli // fastify 공식문서 참고 # 생성 완료 후 % fastify generate test_example // fastify 생성 2. 서버 동작 확인 # 생성된 폴더 내에서 (example_test) % npm install # package.json 내 scr chance-story.tistory.com 1. AWS ECS ..

클라우드/AWS 2023.01.20

[Mac OS]Git Action 을 통한 ECR 레지스트리 Push 자동화

참고링크 https://github.com/aws-actions/amazon-ecr-login GitHub - aws-actions/amazon-ecr-login: Logs into Amazon ECR with the local Docker client. Logs into Amazon ECR with the local Docker client. - GitHub - aws-actions/amazon-ecr-login: Logs into Amazon ECR with the local Docker client. github.com 주의사항!!! 코드에 민감 정보를 담지 않고 AWS 로그인을 위한 액세스키, 시크릿키 노출 금지 및 별도 관리 필수!! 1. Git 레포지토리 내 settings 메뉴 접속 2. S..

클라우드/AWS 2023.01.19

[Mac OS]컨테이너화 이미지 & mongodb 실행 (docker-compose.yaml)

https://www.mongodb.com/ko-kr/products/compass MongoDB Compass MongoDB용 GUI인 Compass를 사용해 데이터를 탐색하고 상호 작용하세요. 단일 인터페이스에서 쿼리, 수정, 삭제 등 다양한 작업이 가능합니다. www.mongodb.com mongo compass 를 사용했다. mongo compass 의 기본 포트는 27017 번 이다. 참고 링크 https://hub.docker.com/_/mongo mongo - Official Image | Docker Hub Quick reference Supported tags and respective Dockerfile links Note: the description for this image is ..

클라우드/AWS 2023.01.18

[Mac OS]Server Container화 & ECR Registry Push (Fastify CLI, AWS ECR, docker, Elastic Container Registry)

1. Fastify CLI 설치 % npm i --global fastify-cli // fastify 공식문서 참고 # 생성 완료 후 % fastify generate test_example // fastify 생성 2. 서버 동작 확인 # 생성된 폴더 내에서 (example_test) % npm install # package.json 내 scripts 명령어 실행 % npm run dev 또는 % npm run start # 서버 실행 후 localhost:3000 접속 후 root:true 확인 3. fastify cli 문서 참고 => fastify 컨테이너화를 위해 listen address 를 0.0.0.0으로 수정한다. => 서버 실행 시 127.0.0.1:3000 이 아닌 0.0.0.0:..

클라우드/AWS 2023.01.18

[Mac OS]AWS 배포 자동화 -3 Server (CodePipeline, CodeBuild, CodeDeploy, pipline 오류 확인)

* 인스턴스 태그 및 역할 부여 - 인스턴스 생성 후 태그 관리 설정 => 인스턴스는 우분투 20버전 사용함 - 태그 추가 - 인스턴스 -> 작업 -> 보안 -> IAM 역할 수정 -> 역할만들기 -> AWS서비스, EC2 선택 -> => IAM 역할 수정을 통해 인스턴스 역할을 부여함 => EC2 인스턴스에 역할을 부여함으로써 다른 AWS 서비스를 호출할 수 있는 권한을 가짐 - 역할 선택 - 생성된 역할 클릭 -> 신뢰 관계 편집 -> => 신뢰 관계 란 해당 역할을 취할 수 있는 서비스나 사용자를 명시하는 부분 => Access를 통해 역할을 생성했지만 서비스를 신뢰 관계에서 명시함으로써 역할이 확실히 완성됨 - EC2 수정 페이지 (IAM수정페이지) 에서 IAM역할 부여 - 인스턴스 내 보안그룹 ..

클라우드/AWS 2023.01.15

[Mac OS]AWS 배포 자동화 -1 Client (CodePipeline, CodeBuild, CodeDeploy, pipline 오류 확인)

CodeBuild 란? - 클라우드상의 완전관리형 빌드 서비스 - 소스코드를 컴파일하고 단위 테스트 실행 => 코드빌드 사용 시 장점 - 완전 관리형 : 빌드 서버를 직접 설정하여 패치 및 업데이트를 적용할 필요가 없음 - 주문형 : 빌드 요구 사항에 따라 조정됨, 사용한 빌드 시간만큼 요금 지불 - 아웃 오브 더 박스 : 프로그래밍 언어에 맞게 사전 구성된 빌드 환경을 제공, 빌드 스크립트를 선택하여 시작하면 됨 CodePipeline 란? - 소프트웨어 릴리즈에 필요한 단계를 모델링, 시각화 및 자동화 하는데 사용할 수 있는 지속적 전달 서비스 - 신속한 모델링 구성 가능 - 소프트웨어 변경 사항을 지속적으로 릴리스하는 데 필요한 단계 자동화 가능 CodeDeploy 란? - EC2 인스턴스, 온프레..

클라우드/AWS 2023.01.14

[Mac OS]GitHub Action을 이용한 Node.js CI

Github Action 이란? - GitHub 에서 제공하는 CI/CD (지속적 통합, 지속적 배포) 를 위한 서비스 - 특정 이벤트가 발생했을때 특정 작업을 수행하여 주기적으로 어떠한 작업들을 반복적으로 수행할 수 있다. - 자동으로 각종 테스트 및 검사를 진행하여 오류 검출 및 정상 동작 확인이 가능하다 (휴먼 에러를 줄이며 빠른 배포를 가능케 한다) 1. git hub Repository 에서 우측 상단 Add file 을 통하여 CI를 생성한다. - Create new file 2. Edit new file 에 CI 관련 내용을 작성한다. 3. 혹은 Action -> New workflow 를 통하여 여러 템플릿 중 하나를 선택한다. 4. node.js.yml 파일의 템플릿이다. 5. 작성 완료..

업무 관련 툴 2023.01.12
반응형