분류 전체보기 216

쿠버네티스 - 차트 시트

명령적 접근 kubectl create deployment ‘deployment이름’ —image=‘dockerhub 경로’ 예)sanghyupl/kub-first-app kubectl get deployments > 클러스터에 deployment가 얼마나 있는지 확인할 수 있음 > deployment에 생성된 모든 것을 볼수 있음 kubectl get pods > 이미지에 대한 오류를 확인 > 이미지는 로컬에 있기 때문에 찾을 수 없음 kubectl delete deployment first-app > first-app deployment 삭제 Kubectl expose > service를 생성하여, deployment에 의해 생성된 pod를 노출시킴 kubectl expose deployment fi..

쿠버네티스-작동원리

쿠버네티스 > 클라우드 서비스 프로바이더가 아님 > AWS, Microsoft Azure의 대안도 아님 Cluster(배포 혹은 원하는 최종 상태를 구성하는 모든 것의 컬렉션 세트) Master Node : Control Plane -> Pod 및 container 제어 : API Server(Worker Node와 통신) : Scheduler(Pod를 감시) - API에 알림 : Kube-Controller-Manager(Worker Node 전체를 감시하고 제어) -> 적당한 수의 포드를 가동 중에 있는지 확인하는 역할 : Cloud-Controller-Manager(클라우드 프로바이더에 따라 다름) -> 클라우드 프로바이더에게 무슨 일을 해야 하는 지 알려줌 Worker Node = ec2 인스턴스..

도메인 주도 설계 예시

팀 전체가 도메인 지식을 공유를 통해 프로젝트의 방향성을 얼라인(align)시키는 것에 있습니다. 이 과정에는 프런트엔드 개발자, 백엔드 개발자, 데브옵스 개발자, 인프라 엔지니어 등의 소프트웨어 관련 담당자만 참여하는 것이 아닙니다. 하나의 프로젝트 팀에 속하는 기획자와 프로젝트 매니저, UI/UX 디자이너 등 모든 인원이 참가하게 됩니다. 모든 구성원이 이해할 수 있는 형태와 언어로 프로젝트를 시각화합니다 완성된 결과물을 가지고 모든 팀 구성원이 하나의 방향성을 가진 상태로 각자의 역할을 수행하게 됩니다. 도메인 주도설계의 주요 용어 도메인 이벤트: 발생한 사건 커맨드: 도메인 이벤트를 트리거하는 명령 외부 시스템: 도메인 이벤트가 호출하거나 관계가 있는 레거시 또는 외부 시스템 액터: 개인 또는 조..

Git Action-S3 배포

GitHub Action Secret 설정 우선 yml에서 사용할 수 있도록, AWS에 접근이 가능한 AWS-ACCESS-KEY와 SECRET-KEY를 Github에 설정하여야 합니다. 배포를 원하는 Repository에 접속한 뒤 Settings > Secrets > Actions을 선택합니다. Actions Secrets 우측의 New repository secret를 선택합니다. new repository scret을 추가한다. AWS_ACCESS_KEY_ID : IAM -> 보안자격증명 에있는 access_key_id AWS_SECRET_ACCESS_KEY : IAM -> 보안자격증명 에있는 secret_access_key_id REACT_APP_ENDPOINT : 연결한 backend서버 주소 ..

ECS 배포 자동화

배포를 자동화할 ECS 작업 테스크의 JSON파일을 가져온다. task-definition.json 파일을 프로젝트 폴더안으로 옮긴다. 나는 프로젝트폴더 최상위 폴더에 aws폴더를 만들어서 넣어줬다. 깃액션 yml 작성 프로젝트 폴더 최상위에 /github/workflows/deploy-ecr.yml 파일을 만들어준다. env에 설정된 값은 다음과 같다. AWS_REGION: ap-northeast-2 사용하고 있는 aws region이다. ECR_REGISTRY: 725601756882.dkr.ecr.ap-northeast-2.amazonaws.com ecr의 registry이다 이미지의 앞부분 ECR_REPOSITORY: mildstone-backend ecr의 repository이다 이미지의 뒷부분..

서버리스

서버리스 등장 배경 및 소개 웹 애플리케이션을 적은 예산 빠르게 확장 가능 관리와 운영은 쉽게 -> 이것을 혼자 할 수 있을까? = 당연히 불가능 -> 하지만 여기에도 답은 있다. 바로 '서버리스'이다 서버리스의 정의 > 서버가 없는 게 아니라, 서버에 대한 고민을 안 하는 것 컴퓨팅의 진화 과정 > 오래전에는 애플리케이션을 배포하려면 직접 하드웨어 서버를 구매해서 구성, 이때는 하드웨어와 소프트웨어 둘 다 관리를 했어야 했다. > 이런 서버의 하드웨어 관리의 어려움을 해결해 준 것이 AWS 클라우드 컴퓨팅 서비스 EC2였다 -> 하드웨어 관리의 불안감을 덜 수 있게 됨 > 하지만 빌려서 구성한 서버의 소프트웨어도 보안, 업데이트, 백업과 같은 많은 관리 과정이 필요 > 이런 서버의 소프트웨어 관리의 어..

마이크로서비스 아키텍처의 정의

다음 특징을 갖는 서비스들의 조합으로 이뤄진 설계 유지보수에 유리하고, 테스트 가능해야 함 느슨하게 결합되어야 함 독립적으로 배포 가능함 비즈니스 역량을 중심으로 구성해야 함 작은 팀에 의해 소유됨 서비스로서의 컴포넌트화 컴포넌트: 독립적으로 대체하거나 업그레이드 가능한 소프트웨어 단위 컴포넌트화: 시스템을 구성 요소(Component)를 나누고 이를 연결하여 구축하는 것 컴포넌트화는 어떻게?: 소프트웨어를 여러 서비스로 분리하는 것 라이브러리 vs. 서비스 비즈니스 수행에 따른 구성, 프로젝트가 아니라 제품 before: 기술적 계층에 따른 팀 분류 예) UI팀, business 팀, 데이터베이스 팀 > 단순한 변경이 필요한 경우에도 팀 간의 협업 비용이 증가함 after: 비즈니스 수행 능력(업무 도..

프로젝트 2 회고

▶ Project 02 - 이번 프로젝트는 CI/CD를 구축하여 3-tier-architecture를 구축하는 것이었습니다 - 이번에는 프로젝트 단계마다 시간 제한이 있었고 처음이었지만 재밌었던 것 같습니다 - 이번에도 처음부터 오류도 많이 만나고 어려웠지만 모르는 것을 팀원들과 상의하여 해결해 나갈 수 있었습니다 day1 마일스톤 1 fastify를 이용해 간단한 서버를 구축하고 dockerfile로 컨테이너화 한 후 ecr로 푸쉬하는 작업을 했었습니다 여기까지는 잘 되었었습니다 마일스톤 2 서버와 mongo DB를 docker-compose로 작성하여 한꺼번에 컨테이너를 실행 시키는 것이었습니다 시험 삼아 로컬에서 컨테이너화 한 mongo DB로 접속을 시도했으나 아래와 같은 오류가 생겼었습니다 > ..