쿠버네티스 컴포넌트
·
Docker
쿠버네티스는 한 대의 마스터와 여러 대의 워커 노드들로 구성마스터- 쿠버네티스 주요 기능 담당 컴포넌트kube-apiserverAPI 서버는 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트이다. API 서버는 쿠버네티스 컨트롤 플레인의 프론트 엔드이다.쿠버네티스 API 서버의 주요 구현은 kube-apiserver 이다. kube-apiserver는 수평으로 확장되도록 디자인되었다. → 즉, 더 많은 인스턴스를 배포해서 확장할 수 있다. 여러 kube-apiserver 인스턴스를 실행하고, 인스턴스간의 트래픽을 균형있게 조절할 수 있다.etcd모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성·고가용성 키-값 저장소.kube-scheduler노드가 배정되지 않은 새로 생..
쿠버네티스 스토리지
·
Docker
파드에서 데이터를 안정적으로 저장하는 방식hostPath클라우드 서비스 방식1. FTP Server 구축1-1) NFS 패키지 다운 및 설치설치yum -y install nfs-utils rpcbind
systemctl start rpcbind
systemctl start nfs-server
systemctl start rpc-statd
systemctl enable rpcbind
systemctl enable nfs-server확인systemctl status nfs-server1-2) 공유 폴더 생성 및 설정공유 폴더 생성mkdir /share-data
chmod 777 /share-datavi /etc/export..
[AWS] NestJS(NodeJS) 백엔드 서버 CI/CD Beanstalk으로 배포하기 with Docker
·
AWS
항상 백엔드 토이프로젝트를 할 때는 로컬에서 개발만 하다가 문득 이런 생각이 들었습니다. "아...CI/CD를 한 번만 구축하게 된다면 나중에 큰 도움이 되지 않을까?" 위와 같은 생각이 들어서 바로 작업에 들어갔습니다. 먼저, 배포를 하기 위해 사람들은 여러가지 방법을 쓰고 있지만 저는 AWS Elastic Beanstalk을 이용하여 인프라를 구축해보자라는 마음이 들었습니다. 이유는 딱히 없었습니다만...깃헙 액션이나 젠킨스와 같은 도구들도 있지만 AWS의 Code Pipeline을 한 번 써보고 싶었습니다 ㅎㅎ (사실 이미 사내 CI/CD가 EB로 구축되어 있긴 하나 제가 구축 해본 경험이 없어서 직접 해보면 도움이 되지 않을까 싶어서였습니다 ㅎㅎ...) 먼저 간단하게 백엔드 서버는 NestJS 프..
[Prisma] createMany시 생성 된 data 반환하기
·
카테고리 없음
기본적으로 Prisma에서는 createMany시 몇 개의 row가 생성되었는지 개수를 반환합니다. 예를 들어 아래와 같은 코드가 있다고 가정해봅시다. public async createPosts(authorId: number) { return this.prisma.post.createMany({ data: [ { title: 'Post 1', content: 'Content 1', authorId, }, { title: 'Post 2', content: 'Content 2', authorId, }, ], }); } 위와 같다면 실제로 반환 되는 데이터는 아래와 같습니다. { "count": 2 } 하지만 원하는 반환 값이 실제 생성된 data라면 별도로 Prisma 내장 메서드와 같은 것으로는 이 부분..
[백엔드] 구글 인앱결제 영수증 검증
·
카테고리 없음
안녕하세요. 구글 PlayStore에서 인앱결제를 구현하는 방법을 정리하고자 합니다. 요즘은 공식 문서가 워낙 잘 발달해서 별다른 구글링이 필요 없을 수도 있지만, 구글 쪽 인앱결제는 공식문서가 난잡하여 정리해보고자 합니다.  먼저, 인앱 결제의 간단한 flow부터 알아봅시다.  그러면 백엔드 서버 측에서 구글 서버로 호출하는 API를 기반으로 흐름을 정리하자면 아래와 같습니다.  사용자가 앱에서 아이템을 구매한다. (결제 완료까지 된 상황)앱에서는 백엔드 서버 측으로 특정 정보를 백엔드 서버로 전달한다.백엔드 서버는 앱 측으로부터 전달받은 정보를 가지고 구글 서버로 해당 결제 정보가 유효한지 확인한다.유효한 결제 정보라면 해당 아이템을 소비시키며, DB에 해당 아이템의 액세스 권한을 부여한다. (단, ..
스마일게이트 윈터데브캠프 후기
·
카테고리 없음
https://github.com/sgdevcamp2022/recoder GitHub - sgdevcamp2022/recoder: 스마일게이트 개발 캠프 2022 - 윈터 개발 캠프 2기 - ReCoder스마일게이트 개발 캠프 2022 - 윈터 개발 캠프 2기 - ReCoder. Contribute to sgdevcamp2022/recoder development by creating an account on GitHub.github.com주제우리 팀은 화상회의 플랫폼이라는 주제를 가지고 구글 미트 클론 코딩을 목표로 선택하였습니다. 개인 목표 PMP 문서 작성을 통하여 내가 어떤 점을 목표로 삼아야 하는지, 무엇이 부족하고 무엇을 해야 하는지를 정확하게 파악할 수 있게 되어서 자기 객관화에 도움이 된 ..
NestJS Request cycle (Flow)
·
NestJS
NestJS의 Request cycle에 대해 학습하고자 한다. 먼저 NestJS 공식 문서의 요약은 아래와 같이 나열되어있다. https://docs.nestjs.com/faq/request-lifecycle Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Prog..
[자바스크립트] 스코프
·
Javascript
자바스크립트에서 스코프(scope)란 무엇일까? 스코프는 쉽게 말해 유효 범위를 뜻하는 단어이다. 자바스크립트뿐만 아니라 프로그래밍 언어에서 중요한 개념이다. 먼저 자바스크립트에서 변수를 선언하는 키워드는 3가지가 있다. var let const var로 선언한 변수와 let, const키워드로 선언한 변수의 스코프도 서로 다르게 동작한다. 간단하게 함수로 예시를 들어본다면 아래와 같다. function add(a, b) { console.log(a, b) // 1, 10 return a + b } add(1, 10); //Executed JavaScript Failed: console.log(a, b) // a is not defined 즉, 위 코드를 살펴보면 매개변수는 함수 내부에서만 참조할 수 있..
[쿠버네티스] Node Scheduling
·
Docker
nodeName nodeName은 어피니티 또는 nodeSelector보다 더 직접적인 형태의 노드 선택 방법이다. nodeName은 파드 스펙의 필드 중 하나이다. nodeName 필드가 비어 있지 않으면, 스케줄러는 파드를 무시하고, 명명된 노드의 kubelet이 해당 파드를 자기 노드에 배치하려고 시도한다. nodeName은 nodeSelector 또는 어피니티/안티-어피니티 규칙보다 우선적으로 적용(overrule)된다. nodeName을 사용해서 노드를 선택할 때의 몇 가지 제한은 다음과 같다. 만약 명명된 노드가 없으면, 파드가 실행되지 않고 따라서 자동으로 삭제될 수 있다. 만약 명명된 노드에 파드를 수용할 수 있는 리소스가 없는 경우 파드가 실패하고, 그 이유는 다음과 같이 표시된다. 예:..
[쿠버네티스] Qos 클래스-Guaranteed, Burstable, BestEffort
·
Docker
QoS 클래스 Why? Node에 Pod가 3개 있고 균등하게 자원 배분을 하고 있다고 가정 Pod 1에서 추가적으로 리소스를 더 사용해야 하는 상황 -> App의 중요도에 따라 다른 Pod를 다운시키고 할당시키기 위해 쿠버네티스는 Qos 클래스 지원 QoS 클래스 종류 쿠버네티스가 파드를 생성할 때, 파드에 다음의 QoS 클래스 중 하나를 할당한다. Guaranteed Burstable ( 두 번째로 다운) BestEffort (제일 먼저 다운) Guaranteed QoS 클래스가 할당되는 파드 생성 파드에 Guaranteed QoS 클래스 할당을 위한 전제 조건은 다음과 같다. 파드 내 모든 컨테이너는 메모리 상한과 메모리 요청량을 가지고 있어야 한다. 파드 내 모든 컨테이너의 메모리 상한이 메모리 ..