전체 글
-
무중단 배포 (Github Actions, Code Deploy) - 2CI CD 2025. 1. 23. 00:36
이번엔 CodeDeploy에서 ec2 인스턴스에 자동 배포하는 것을 설정해보려 한다. 1. docker-compose파일 생성docekr-compose 작성법과 문법 설명은 생략하겠다. 아래처럼 yaml파일을 작성한다. 경로는 프로젝트 최상위 경로에 있다.version: '3'services: nginx: image: nginx:latest container_name: nginx ports: - '80:80' volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - /dev/null:/etc/nginx/conf.d/default.conf # default.conf 무효화 networks: - app-..
-
무중단 배포 (Github Actions, Code Deploy) - 1CI CD 2025. 1. 23. 00:30
NCP(네이버 클라우드), jenkins, ArgoCD를 사용해서 무중단 배포를 경험했지만, AWS와 Github Action을 사용해서 CI/CD구현해 보고 삽질을 경험하며 기록을 남기려 한다. 전체 흐름 먼저 하늘색으로 칠해진 부분을 설정해 보자 1. Main 브랜치에 Push 했을 때, WorkFlow 작성name: Github Actionson: push: branches: [main] pull_request: branches: [main]jobs: build: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v2.4.2 - name: Se..
-
TCP/IP 알아보기네트워크/HTTP 2023. 8. 29. 16:51
시작하며 백엔드 개발을 하면서 네트워크 동작과정을 제대로 이해하지 못하고 있다고 느꼈습니다. 이해가 안 가는 네트워크 부분을 가볍게 공부하면서 생각보다 알고 있어야 할 개념들이 있었고, 상당히 복잡한 과정으로 네트워크통신이 이루어진다는 사실을 알게 되었습니다. 네트워크 통신이 복잡하고 어려운 만큼 기록을 하며 네트워크 개념들을 내 것으로 만들어야겠다고 생각하고 해당 개념들을 기록하려 합니다. 1. OSI 7 계층이란? OSI 7 계층은 네트워크 통신에서 일어나는 과정을 7단계로 나눈 것을 말합니다. 계층별로 나눈 이유는 통신이 일어나는 과정을 단계별로 쉽게 파악하고 각 계층의 역할을 쉽게 구분하기 위함입니다. 하지만 그림 왼쪽을 보면 TCP/IP Protocol을 확인하실 수 있습니다. 그 이유는 현재의..
-
[도커] 개념 및 명령어 알아보기도커(Docker) 2023. 7. 21. 04:33
도커 개념 - 도커란? - 도커는 리눅스 컨테이너에 리눅스 애플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트입니다. - Virtual Machin(가상머신) vs Docker Container(도커 컨테이너) - Virtual Machin(VM) - 가상머신은 Hypervisor를 통해 여러 개의 운영체제를 생성되고 관리됨. (Guest OS) - 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 HyperVisor를 거치므로 -> 성능 손실이 큼 - 가상머신은 Guest OS를 사용하기 위한 라이브러리, 커널 등을 포함하므로 -> 배포할 때 용량이 큼 - Docker Container - 도커 컨테이너는 가상화된 공간을 생성할 때 리눅..
-
[Project] Nest Lifecycle 이해하기Project 2023. 7. 14. 17:55
시작하며 링크프렌즈 프로젝트를 진행하면서 어떤 상황에서 Interceptor를 써야 하고 어떤 상황에서 쓰지 말아야 할지에 대한 궁금증이 있었습니다. 해당 궁금증을 해결하기 위해서는 NestJs LifeCycle에 대한 전반적인 이해가 필요하다고 생각했고, 궁금증을 해결하기 위한 과정과 얻게 된 지식을 기록하려 합니다. 마주친 문제 NestJs 공식문서를 보면 다양한 개념들이 나옵니다. Controller, Middleware, Pipes, Interceptor 등 NestJs의 주요 개념들의 실행 순서와 역할을 정확하게 이해하지 못해 해당 프로젝트의 AuthInterceptor부분의 착오가 있었습니다. NestJs Lifecycle ☞ 우선 Middleware와 Interceptor의 차이점을 알아보고..
-
[Project] Nest 페이지네이션 넘어져보기 (cursor, offset기반) Feat: TypeORMProject 2023. 7. 4. 09:32
시작하며 프로젝트를 진행하면서 2종류의 페이지네이션(Cursor, Offset 기반)을 사용해야 하는 상황이 있었습니다. 두 종류의 페이지네이션의 장단점과 "어떤 상황에서 적절한 사용이 될 수 있을까?"에 대한 고민, 그리고 성능면에서 위 두 종류의 페이지네이션 구현방법이 어떤 차이를 갖는가를 설명하고 기록하려 합니다. 마주친 문제 이전 프로젝트에서 페이지네이션을 구현한 경험이 있었고, 그 프로젝트에서 Cursor기반으로 구현했다고 생각했지만 Offset기반으로 구현을 하는 실수를 했습니다. 이유는 Offset, Cursor기반의 기본개념의 미숙지로 인해 실수를 했던 사실을 인지했습니다. 두 페이지네이션 구현방법과 개념을 다시 찾아보면서 실수를 깨닫고 제대로 된 페이지네이션을 구현 설명하려 합니다. 문제..
-
[Project] Nest seeding 해보기 (typeorm-extension사용)Project 2023. 6. 28. 22:08
시작하며 nest 프로젝트를 진행하면서 페이지네이션과 DB의 성능 측정 및 다양한 기능을 확인해 가며 개발을 하고 싶다는 생각을 하던 도중, seeding(무작위 데이터)를 삽입함으로써 개발을 한다는 사실을 알게 되었습니다. nest에서 typeorm-seeding과 typeorm-extension을 사용해서 seeding을 할 수 있다는 사실을 알게 되었습니다. 마주친 문제 처음 seeding을 구현할 때, typeorm-seeding를 활용했습니다. 하지만 TypeORM버전 0.3.x이후로부터 deprecated 되었다는 것을 알게 되었습니다. 구글링을 통해 알아본 결과 TypeORM0.3.x이후 버전부터 typeorm-extenstion을 사용한다는 내용을 확인 후, 다시 typeorm-extens..
-
[MYSQL] MYSQL explain 알아보기데이터베이스/MYSQL 2023. 6. 26. 03:14
시작하며 프로젝트를 진행하면서 DB에 대한 기본적인 지식이 부족하다는 걸 너무 많이 느꼈으며, DB에서 어떻게 쿼리를 생성하고 실행하는지에 대한 의문점이 생겼습니다. 그러던 와중 MYSQL explain(실행계획)을 알게 되었고, explain을 어떻게 사용하는지를 기록하려 합니다. MYSQL EXPLAIN 이란? MYSQL EXPLAIN 은 MYSQL DATABASE가 어떻게 데이터를 찾을 것인가에 관련해 EXPLAIN 해주는 명령어이며, DB가 데이터를 찾아가는 과정을 알아보기 쉽게 DB결과 셋으로 보여주는 것입니다. MYSQL EXPLAIN을 쓰는 이유 DB스키마를 생성 후, 쿼리를 날렸을 때 성능상 문제가 있거나 속도가 저하되는 부분이 있다면 스키마를 수정할 수 있다. 하지만 스키마를 수정했을 때..