목록개발/알쓸코잡 (32)

이번 포스팅은 Docker-compose 를 사용하며, 데이터베이스를 백업하는 방식에 대해 다룬다. 먼저, 해당 포스팅을 작성하기 전, 나는 다음과 같은 문제를 겪었다.- Nest.js 를 Docker-compose 를 활용해 개발 중이었다.- 그리고, Docker 컨테이너 안에서는 docker exec 명령어 자체가 불가능한 상황이었으며- 따라서 DB 백업 명령어를 서버 안에서 직접 실행할 수 없는 문제가 발생했다. 즉, Docker 컨테이너 내부가 아닌 외부에서 백업 명령어를 수행시키면 될 일이다.해결 방식은 다음과 같다.- Nest.js는 백업 요청(.todo 파일)만 생성한다.- 호스트(내 맥북)에서 .sh 파일(backup-watch.sh)이 백그라운드로 실행되게 하고- .todo 파일이 생겼는..

홈서버를 구축해보고자, '일단' 라즈베리파이5를 구매했다.먼저, 해당 설치 방식은 SD카드가 필요하니 참고할 것.아래 해당 홈페이지에서 OS를 설치할 수 있다.https://www.raspberrypi.com/software/ 현재 자신의 PC에 맞는 운영체제를 선택 후, Raspberry Pi imager를 설치해준다. 설치가 완료되면, 아래와 같은 화면이 뜨는데자신의 라즈베리파이 디바이스 모델, 원하는 OS(추천하길래 64Bit OS로 설치)그리고 설치를 원하는 SD 카드를 선택한다. 이후 설치된 파일을 라즈베리파이에 옮겨, 와이파이 및 추가적인 설정을 완료한다.(내 경우, 라즈베리파이와의 인풋 연결을 위해, 방에 있는 마우스와 키보드를 모두 꺼내야 했음 ㅡ.ㅡ) 여자저차 세팅을 완료했는데, 키보..

TCP & UDP TCP와 UDP는 '전송계층'에서 사용하는 프로토콜이다. 여기서 '전송계층'이란, 프로토콜 내에서 송신자 & 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 재전송 요구나 패킷의 오류를 검사한다. TCP TCP는 연결 지향적 프로토콜이라고도 하며, 데이터 전송 전 세션 수립 후, 먼저 통신이 되나 확인하는 과정을 거친다. 통신 후에는 세션이 종료되며, 오류가 났을 경우 재전송을 시도한다. (신뢰성있는 데이터를 전송) 위와 같은 특징 때문에, 웹브라우저 / 이메일 / 파일 전송에서 사용한다. TCP 에서는 3way-handShake 라는 방법으로 연결을 초기화하며 4way-handShake로 통신을 종료하게 되는데, 과정을 그림으로 그리면 다음과 같다. UDP UDP는 비연결형 프로토..

미래의 나에게 // 설치 yarn add prisma // 프리즈마 사용 시 필요한 파일 생성, prisma/schema yarn init // schema.prisma 기반의 Prisma client 등의 자원 생성 yarn prisma generate // schema.prisma 기반으로 DB 업데이트 yarn prisma migrate dev // 실제 DB 반영 없이 migration 파일 변경 yarn prisma migrate dev --create -only 먼저 ORM이란, SQL 쿼리문을 작성하지 않고도 데이터베이스와 상호작용할 수 있게 도와주는 도구다. 2023.01.29 - [코딩/node.js] - ORM / Sequelize & typeORM 이전에는 항상 TypeORM을 사용하..

Gitflow gitflow 란 Git 브랜치를 관리하기 위한 git workflow 를 말한다. 브랜치 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 이때 해당 브랜치는 작업 중 타인의 작업에 의해 영향을 받거나 주지 않는다. 그리고 만들어진 브랜치는 다른 브랜치와 병합(merge)함으로써 새로운 브랜치를 새로 생성할 수도 있다. 브랜치 5종류 1. master 브랜치 : gitflow 에서 병합의 기준이 되는 브랜치로, 어플리케이션을 배포하는 역할을 한다. 2. develop 브랜치 : 릴리즈 버전 개발을 진행하는 브랜치로, 어떤 기능의 구현이 필요한 경우 develop 브랜치에서 브랜치를 생성한 후 개발을 하며, 개발이 완료된 경우는 develop 브랜치에 다시 병합시키는 역할을 한다. ..

CI / CD CI / CD 란 개발의 시작부터 끝인 배포까지의 모든 단계를 자동화하여 효율적이면서도 빠르게 배포하는 것을 의미한다. CI / CD 를 사용할 경우, 애플리케이션을 보다 더 짧은 주기로 고객에게 제공할 수 있다는 장점이 있다. CI / CD 를 정확히 구분하자면, Continuous Integration : 지속적 통합 Continuous Delivery : 지속적 서비스 제공 Continuous Deployment : 지속적 배포 총 세 가지로 나뉜다. CI / CD 파이프라인 CI (Continuous Integration / 지속적 통합) CI 란 개발자를 위한 자동화 프로세스를 의미한다. CI 가 제대로 구현될 경우, 애플리케이션 코드의 변경 사항이 정기적으로 빌드&테스트를 거쳐 ..

Kubernetes Kubernetes (이하 쿠버네티스)는 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구다. 도커 스웜(Docker swarm) / 메소스(Mesos) 등과 같은 역할을 하는 도구라고 볼 수 있으며, 위와 같은 도구들은 일컬어 오케스트레이션 도구라고도 한다. Kubernetes Cluster 쿠버네티스 클러스터는 Kubernetes의 여러 리소스를 관리하기 위한 집합체다. 그리고 클러스터는 노드 > 파드 > 컨테이너 등이 구성되어 이루어져있다. Node ( Master node / worker node) 노드는 클러스터 안의 가장 큰 개념으로, 마스터 노드와 워커 노드로 구분된다. MasterNode 마스터 노드는 클러스터 전체(워커 노드들)를 관리하는 서버이며 클러스터에 핵심..

서버리스 (Server-less) 서버리스 서비스는 그 말마따나 서버가 없는 상태에서 서비스를 제공하는 것을 말한다. 서버가 없는데 어떻게 API를 요청 / 응답 받을 수 있겠느냐 싶다만, API 는 클라우드 제공업체(GCP || AWS 등) 가 제공하는 클라우드 펑션(Cloud Fuction)을 통해 이루어진다. 브라우저에서 API를 요청하고, 클라우드는 클라우드 함수를 통해 API 에 대해 응답한다. 혹여 해당 API 가 DB에 대한 접근을 요청하는 경우, 클라우드에 만들어둔 SQL에 접속해 응답한다. 서버리스 서비스의 장단점에 대해 얘기해보자면 다음과 같다. 서버리스 서비스는 말 그대로 서버가 없기 때문에, 일반적인 서버 배포 비용을 부담할 필요 없이 클라우드 펑션이 호출되는 경우에만 비용이 발생하..