backend
30 posts
ssh 접속 시 unprotected private key file 해결 방안

ssh 접속 시 unprotected private key file 해결 방안 이런 식으로 에러가 발생하는 경우가 생긴다. 이러한 경고는 permission이 잘못되게 설정되는 경우 발생한다.(너무 많은 혹은 너무 적은 permission 모두) 따라서 이런 경우 해결 방안은 다음과 같이 permision을 수정하면 된다. ssh 접속 시 unprotected private key file 해결 방안

July 09, 2024
backend
til ) NestJS + Plasma + MongoDB

서버 설정 및 간단한 가지고 놀아보기 들어가면서 필요한 기술 스텍을 사용하는 방법을 간단하게 적용해보면서 학습해본다. 0. 밑작업 : 몽고 DB Docker 설정 도커파일을 구성 및 도커 컨테이너로 미리 DB를 설치해준다 데이터베이스 설치 1. Prisma 설치 Prisma 를 설치 한다 Prisma 최초 초기화 2. Prisma Connect to DB schema.prisma 파일 설정 환경변수 설정 3. DB 구조를 설정한다 서버 설정 및 간단한 가지고 놀아보기 들어가면서 0. 밑작업 : 몽고 DB Docker 설정 1. Prisma 설치 2. Prisma Connect to DB 3. DB 구조를 설정한다

June 09, 2024
til
backend
til ) AWS 기초 강의 5

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 21: S3 Storage Class 스토리지 클래스 다양한 스토리지 클래스를 제공 클래스 별로 저장의 목적, 예산에 따라 다른 저장 방법을 적용 총 8가지 클래스 S3 스탠다드 99.99% 가용성 99.999999999% 내구성 최소 3개 이상의 가용영역에 분산 보관 최소 보관 기간 없음, 최소 보관 용량 없음 파일 요청 비용 없음(전송 요금은 발생) $0.025/gb(서울 리전 기준) S3 스탠다드 IA 자주 사용되지 않는 데이터를 저렴한 가격에 보관 최소 3개 이상의 가용영역에 분산 보관 최소 저장 용량 : 128kb 최소 저장 기간 : 30일 즉 1일만 저장해도 30일 요금 발생 데이터 요청 비용 발생 : 데이터를 불러올 때마다 비용 지불(GB) 사용 사례 : 자…

June 07, 2024
til
backend
til ) AWS 기초 강의 4

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 16: VPC와 Subnet AWS 의 구조 원칙적으로 VPC는 외부 접근이 안되어야 한다. 하지만 Internet Gateway 가 있기 때문에 접속이 가능한 것일 뿐이다. Virtual Private Cloud(VPC) 개념 : AWS 계정 전용 가상 네트워크이다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있다. VPC 가상의 데이터 센터 외부와 격리된 네트워크 컨테이너 구성 가능 원하는 대로 사설망을 구축 할 수 있다 리전 단위 VPC의 사용 사례 EC2, RDS, Lambda 등의 AWS의 컴퓨팅 서비스 실행 다양한 서브넷 구성 보안 설정(IP Block, 인터넷에 노출되지 않는 EC2 등 구성 ) VPC의 구성요소 서브넷 인터넷 …

June 07, 2024
til
backend
til ) AWS 기초 강의 3

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 11: EC2(5)-EC2 생명 주기 EC2의 생명 주기 중지 중지 중 인스턴스 요금 미 청구 단, EBS 요금, 다른 구성 요소는 청구 중지 후 재시작 시 Public IP 변경 EBS를 사용하는 인스턴스만 중지 가능: 는 중지 불가 재부팅 재 부팅 시에는 Public IP 는 변동 없다 최대 절전 모드 메모리 내용을 보존해서 재시작시 중단 지점에서 시작할 수 있는 정지 모드 12: EC2 Autoscaling 스케일링 수직적 스케일(Vertical Scale) : 성능을 올리는 방식 수평적 스케일(Horizontal Scale) : 규모를 늘려 병렬적으로 처리하는 방식 AWS Auto Scaling 애플리케이션을 모니터링 하고 용량을 자동으로 조정하여, 최대한 저렴하…

June 07, 2024
til
backend
til ) AWS 기초 강의 2

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 6: 가상화란? 리소스를 효율적으로 사용하도록 만드는 것, 가상화(VM) 직접 OS가 하드웨어 설치된 상태(Bare-Metal)로 과거엔 운영했음 가상화의 역사 1세대 : 완전 가상화 (Fully Emulated) 모든 시스템 요소가 에뮬레이터 안에 들어감 하드웨어 리소스(CPU, 하드디스크, 마더보드 등 모든 요소)를 에뮬레이터로 구현하여 OS와 연동 오버헤드 심함 2세대 : Paravirtualization Guest OS는 하이퍼바이저와 통신 하이퍼 바이저 : OS 와 하드웨어 사이에 존재하는 일종의 가상화 매니저 속도의 향상 몇몇 요소의 경우 여전히 에뮬레이터 필요 = 여전히 일정 부분 오버헤드가 발생함 3세대 : Hardware Virtual Machine(HV…

June 07, 2024
til
backend
til ) AWS 기초 강의 1

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 1: 클라우드 컴퓨팅이란? 서버가 존재 하면, 클라이언트 사이의 통신이 아닌 서버와 클라이언트 간의 통신을 통해 정보 처리, 정보 전달 면에서 유효하게 된다. 데이터 센터 : 어플리케이션의 서버를 호스팅하는 실제 시설 하드웨어 네트워킹 장비 전원공급장치 전기 시스템 백업 발전기 환경 제어장치(에어컨, 냉각장치 등) 운영인력 기타 인프라 등등… 데이터 센터는 운영에 비용이 많이 소요됨 건물 유지 비용, 서버 구매 비용, 셋업, 유지 보수 등 한번 구매하면 수요에 상관 없이 계속 보유해야함 느린 구축 시간 유저의 수요에 빠르게 대처 어려움 장애 발생에 대한 대응 느려짐 클라우드의 출현은 필현에 가깝다. 클라우드의 장점 자본 비용을 가변 비용으로 대체 규모의 경제로 얻게 되는 …

June 07, 2024
til
backend
til ) TypeScript 복습하기 05

Object Types JS에서는 근본적으로 객체를 통해 데이터들을 모으고, 전달하며, TS는 이걸 기반으로 타입화 한다. Quick Reference 치트시트를 확인하면 빠르게 사용 방법을 볼 수 있을 거다! Property Modifiers 각 프로퍼티는 객체 안에서 사용되거나, 옵셔널인지 여부 등을 지정해 줄 수 있다. Optional Properties 마크를 붙임으로써 해당 값의 존재 여부를 선택적으로 지정해줄 수 있다. 그리고 이러한 옵셔널한 설정은 와 함께 TS에선 undefined 가 될 잠재성이 있다고 판단하여, 에러를 보여주곤 합니다. 따라서 간단하게 검사를 하는 것을 추가하여 수저을 하거나 JS에서 제공하는 방식을 통해 해결도 가능하다. 구조 분해 패턴, 기본값을 적용하여 내부 값이 옵셔널일 때 기본값을 가질 수 있어서 undefined가 나지 않도록 조치를 취한다. readonly Properties readonly 라는 표시를 한 프로퍼티들은 읽을 순 있으…

June 05, 2024
til
backend
til ) TypeScript 복습하기 04

More on Functions TypeScript에서는 함수들이 호출될 수 있는 방법을 서술하는 방법이 많이 있다. 함수를 설명하는 타입들을 작성하는 방법들을 알아본다. 함수 타입 표현식 함수를 설명하는 가장 간단한 방법은 함수 타입 표현식이다.  라는 문법은 “문자열 타입 를 하나의 매개변수로 가지고 반환값이 없는 함수”를 의미한다. 함수 선언처럼, 매개변수의 타입이 지정되지 않으면, 암묵적으로 가 된다. 매개변수 이름이 필수다. 즉, a라고 이름을 붙이는 것은 필수라고 생각해라. 타입 별칭을 사용해서 함수의 타입에 이름을 붙이는 것도 가능하다. 호출 시그니처 함수들은 호출만 되는게 아니라 프로퍼티를 가질 수 도 있다. 단, 함수 타입 표현식 문법은 프로퍼티를 정의하는 것을 허락하지 않는다. 객체 타입에 호출 시그니처를 활용해야만 함수에 프로퍼티를 추가할 수 있다. 함수 타입 표현식이 아니므로 반환타입을 표현할 때 가 아닌 로 표현한다. 구성 시그니처 호출 시그니처 앞에 …

June 04, 2024
til
backend
til ) TypeScript 복습하기 03

Narrowing 타입 좁히기는 TS가 코드 실행 중, 로직 상에서 가능한 타입을 줄여 나가는 과정을 의미한다. 위의 예시를 보면 typeof 를 활용하여 타입을 좁혀 나가고, 그 외의 경우인 경우를 역시 추론하여 padding 이 string일 수 있다고 생각, return 문을 문제없이 넘어가게 만든다. TS는 이러한 기능을 통해 코드 타입의 안정성을 보장해주고, 이러한 방식으로 조건문, 반복문, 진리성 체크, 삼항 식 등을 통해 코드를 명확하고 오류가 없게 만드는 것이다. typeof type guards JS에서 지원하는 연산자를 TS에서도 동일하게 지원한다. string number bigint symbol undefined object funtion 이러한 기능을 활용하여 연산자를 통해 타입을 축소하는 것을 라고 부른다. Truthiness narrowing 진실성은 사전에 정의된 명칭은 아니지만, JS에서도 TS에서도 사용되는 형태이다. JS에서는 조건을 boolea…

June 04, 2024
til
backend
til ) TypeScript 복습하기 02

Everyday Types 타입은 단지 타입 표기 외에 더 다양한 위치에 나타날 수 있고, 새로운 구조체를 만들고자 할 때 타입을 참조하는 경우도 있다. 원시 타입 : string, number, boolean String, Number, Boolean 과 같은 타입은 유효한 타입이긴 하지만, 특수 내장 타입으로 쓰면 안된다. 쓰지 말고, string, number, boolean을 사용해라. 배열 = 는 튜플 타입으로 배열이 아니다. any 특정 값으로 인하여 타입 검사 오류가 발생하는 것을 원하지 않을 때 사용할 수 있다. 해당 타입은 코드상 특정 라인에 문제가 없다고 TS를 안심시킨다는 목적 단지 하나 때문에 긴 타입을 새로 정의하고 싶지 않을 때 유용하게 사용할 수 있다. : 컴파일 플래그로 any 를 쓰는 것을 강제로 막을 수 있다. 변수에 대한 타입 표기 추론 규칙을 명시적으로 학습하지 않아도 되고, 처음 시작 시에는 굳이 타입 표기를 적게 사용할 수 도 있다. …

June 03, 2024
til
backend
til ) TypeScript 복습하기 01

TypeScript 들어가면서 좀 더 진지하게, 타입스크립트 언어에 대해 베이직을 제대로 정리 해놓으려고 한다. 어떤 개발자가 될지는 어쩌면 시작에서 결국 결정나니까..! 본 정리는 TypeScript 공식 문서를 요약한 내용이며, 전체 내용을 담고 있진 않으니까 레퍼 문서를 꼭 참고하실 것..! TypeScript for Java / C# Programmers JavaScript 함께 배우기 (Co-learning JavaScript) TypeScript는 JS와 동일한 런타임을 사용하므로, 특정한 런타임 동작의 구현에 필요한 리소스는 JS에서도, TS에서도 잘 적용된다. TS에 국한하여 특정된 리소스에만 제한을 두지 말 것 클래스 다시 생각하기 C#, Java 는 명시적 OOP 언어이다. 그러나 TS는 이러한 방식과 차이를 가진다. 자유로운 함수와 데이터 JS에서부터 시작하여 함수, 데이터는 미리 정의된 클래스나, 구조에 속하지 않고 자유롭게 데이터를 전달할 수 있는 유연성을 …

June 03, 2024
til
backend
til ) NestJS 를 공부하자 - 02

NestJS Zero to Hero - Modern TypeScript Back-end Development Creating a Task Service 서비스 생성하기 생성자를 활용해서 DI 진행하기 이렇게 private 라는 접근 지시어를 넣어줌으로써, 기존의 OOP 들이 특정 기능을 의존성 주입하는 방식들로 하지 않고, 생성자에서 인자로 넣어주는 것 만으로도 프로퍼티로 사용할 수 있도록 해줄 수 있다. 이러한 특징이 타입스크립트가 더 짧고, 가독성이 좋게 만들어주는 요소라고 할 수 있겠다. NestJS Zero to Hero - Modern TypeScript Back-end Development Creating a Task Service 생성자를 활용해서 DI 진행하기

June 03, 2024
til
backend
til ) NestJS 를 공부하자 - 01

NestJS Zero to Hero - Modern TypeScript Back-end Development 들어가면서 들어가기로 확정된 회사에 대해, 기술 스택이 기존에 써봤던 nestJS 를 기반으로 한다기에 급하게, 아주 핵심만 정리하는 그런 학습이다. 인강을 기준으로, 필요한 내용이나, 핵심 위주만 정리를 할 예정이다. Installation 주의 : 윈도우 권한 문제 발생 시 파워쉘 보안 정책 문제 해결 <- 이 내용을 통해 보안사항을 수정하면 해결된다. npm vs yarn vs pnpm npm, Yarn, pnpm은 모두 JavaScript 패키지 매니저로, 패키지 관리와 의존성 설치를 위한 도구입니다. 그러나 각각의 특징과 차이점이 있습니다. 속도 및 성능 npm: 기본적으로 속도가 느릴 수 있지만, 최근 버전에서는 속도가 많이 개선되었습니다. Yarn: 병렬 처리를 통해 속도가 빠르며, 캐시 시스템을 사용하여 재설치 시 더 빠른 성능을 제공합니다. pnpm: 하드…

June 03, 2024
til
backend
docker-kubernetes ) til - 20240524

색션 13. Kubernetes로 데이터 & 볼륨 관리하기 213. Kubernetes 볼륨 시작하기 데이터를 저장하고 불러오는 기능을 포함하는 서비스를 쿠버네티스를 통해 올리는 순간 문제에 봉착하게 된다. 이는 바로 어떤 이유에서든지 재 시작되었을 때의 문제이다. 일전 강의를 위하여 준비된 프로젝트는 재시작의 확실한 방법이 없는 상태인데, 이러한 일들이 발생할 수 있다는 점은 어떤 시나리오에서든지 예상을 해야한다. 그리고 이런 상황에서 쿠버네티스가 다시 시작 될 때 볼륨을 사용하지 않았기 때문에 지금의 상황으로는 모든 데이터가 손실되고 만다. 당연하게도 이를 해결하는 것이 바로 볼륨이며, 공식문서를 보면 엄청나게 많고 다양한 종류의 볼륨이 등장한다. 이를 보면 압도당할 수는 있다. 하지만, 필요한 순간에 찾으면 되는 것이고, 다양한 유형의 볼륨 및 드라이버는 그때그때 보고 익히면 될 문제다. 상당히 많은 종류가 존재하며, deprecated 된 것도 존재한다. 본 강의에서는 …

May 24, 2024
til
backend
docker-kubernetes ) til - 20240513

색션 13. Kubernetes로 데이터 & 볼륨 관리하기 211. Kubernetes 볼륨 : 이론 & Docker 와의 비교 당연한 말이지만 Pod의 일부로 시작되는 컨테이너에 볼륨을 탑재 하며, 탑재해야하는 내용에 대해 Pod Template 에 추가할 수 있다. 이러한 점에서 쿠버네티스는 다양한 형태와 드라이버를 제공하고 기본적으로 큰 기준으로는 과 정도로 나눌 수 있다. 여기서 핵심은 볼륨의 라이프타임, 생명주기가 Pod의 생명주기에 의존한 단 부분일 것이다. 즉, 볼륨도 쿠버네티스에 의해 시작되고, Pod와 함께하는, Pod의 일부다. 그렇다는 말은 Pod에 따라 볼륨은 달라지고, 대게 문제는 없으나, 때론 이 과정에서 문제가 발생하니 이를 이해하고, 잠재적인 문제 해결 방안을 아는게 핵심이라고 볼 수 있다. 볼륨의 수명 볼륨의 수명은 Pod 와 함게 한다고 보면 된다. 따라서 내부의 컨테이너의 수명과는 관련이 없어서, 컨테이너를 다시 시작하고, 제거해도 살아남는다…

May 15, 2024
til
backend
docker-kubernetes ) til - 20240513

색션 13. Kubernetes로 데이터 & 볼륨 관리하기 208. 모듈 소개 우리는 쿠버네티스를 활용하여 컨테이너를 배포하는 기능들을 실습했고, 이를 minikube 위에서 진행했다. minikube 는 하나의 호스트 머신이자 로컬 호스트의 가상 머신이기도 하다. 하지만 이것으로 끝이 아니라 쿠버네티스는 궁극적으로 애플리케이션을 다중 시스템, 다중 노드 클러스터에 배포한다는 목표까지 나아가야 한다. 이러한 점에서 우리는 도커를 배울 때와 비슷한 문제를 직면하게 되는데, 즉, 데이터를 저장하고 관리하는 방법에 대한 명확한 길이 제시 되어야한다. 왜냐하면, 컨테이너가 종료되거나, 쿠버네티스가 관리 과정에서 Pod의 제거, 확장, 노드 간의 이동 등으로 데이터를 적절하게 유지되도록 보장하게 만들 수 있는가가 매우 중요하기 때문이다. 따라서 이번 챕터는 볼륨에 대해 도커에서의 개념을 다시 한 번 살펴보고, 쿠버네티스의 볼륨의 작동, 유지 방법에 대해 알아볼 것이다. 일반볼륨, 영구 볼…

May 13, 2024
til
backend
docker-kubernetes ) til - 20240510

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 203. Label & Selector selector 에 대해 다시 이야기를 해보고자 한다. 이는 다른 리소스를 리소스에 연결하는데 사용하는 용도라는 중요한 기능을 가지고 있기 때문이다. selector 는 기본적으로 서비스나, deployment를 모니터링하고 연결시키는 역할을 한다. 최근의 현대적 selector는 이라는 것이 있고, 거기서 더 나아가서 이라는 개념을 사용한다. 이는 좀더 다양한 기능들을 지원한다. 기본적으로 -(하이픈)을 통해 구성이 되며, 중괄호 내의 키와 값으로 구성되어 있다. 추가로 Operator 가 들어갈 수 있다는 점이 차이점이다. In이란 값을 가지면, 각 키의 값들에 포함되면 감지가 되는 구조라고 보면 된다. 더 많은 자원 제어와, 유연성이 필요하면 가 적절하다 그러나 기본적인 경우에는 어지간하면 쓰지 않아도 충분하다. 더불어 하나 알아둘 것이 metadata는 키값=쌍의 구…

May 10, 2024
til
backend
docker-kubernetes ) til - 20240424

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 200. 선언적으로 service 만들기 service.yaml 이렇게 구동한 다음 서비스에 접근하게 되면 어플리케이션에 접근이 가능해진다. 여기까지를 통해 어플리케이션을 선언적 방식을 통해 띄우는 것 까지 가능했다. 이를 통해 우리는 에러, 명령적으로 매번 쳐줘야할 번거로움을 해결했다. 201. 리소스 업데이트 & 삭제 어떻게 바꾸면 되는가? YAML 파일에 변경할 내용을 수정한 뒤 간단하게 apply 를 하면 된다. 즉, YAML 에서 설정 가능한 부분은 수정하고 적용하면 쉽게 구성을 바꿀 수 있는 것이다. 어떻게 삭제하면 되는가? 기존에 방식으로 명령어를 통해 하는 것도 가능하다. 하지만 -f 옵션과 함께 해당 config 파일을 지목해주면, 이 역시 동일하게 지정한 것들을 삭제하는 것이 가능해진다. 202. 다중 vs 단일 config 파일 master-deployment.yaml 개발자가 원하면 ya…

April 26, 2024
til
backend
docker-kubernetes ) til - 20240424

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 198. Pod와 컨테이너 사양(Spec) 추가 Spec 추가 template는 항상 Pod 를 대변하는 객체이다. 따라서 최초에 를 통해 deployment 를 설정한 것과는 다르게 설정되는 것이다. 더불어 이렇게 설정하는 것은 전체 Pod에 대한 설정이라고 생각하면 된다. Pod 설정하기 - 개체 -f 는 파일을 인식시키기 위한 옵션 값, 여러 개를 인식 시킬 때는 이 옵션을 여러번 사용하면 된다. 우선 이렇게 해보면 에러메시지로 가 필요하다고 이야기 한다. selector란 어떻게 하는 것인가. deployment 는 쿠버네티스 속에서 동적인 객체다. Pod의 확장 명령이 떨어지면 deployment 가 지속적으로 감시하며 살핀다. 이때 제어야 할 필요가 있을 때 가 필요해진다. Pod에 대한 라벨링, 티어 설정 등은 자유롭게 할 수 있고, 그걸 지정한 뒤 selector가 이걸 가리킴으로써 deploy…

April 24, 2024
til
backend
docker-kubernetes ) til - 20240423

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 196. 명령적 접근방식 vs 선언적 접근방식 명령적 접근방식에서 선언적인 방식으로 여러가지 명령어를 통해 쿠버네티스를 구동하는 것을 배웠다. 그러나 이러한 방식의 단점은? 어렵진 않으나 명령어를 외워야 한다. 매번 작업에 적용해야 한다. 이러한 점들은 docker 때와 비슷하게 불편할 수 있고, docker compose를 배운 뒤 훨씬 편해졌고, 이러한 내용이 kubectl에도 적용될 수 있다. A Resource Definition 위에서 언급한 것처럼 파일 내의 구성을 기반으로 deployment 를 생성할 수 있고, 이를 쿠버네티스는 지원한다. YAML 파일 형태를 지원한다. 예시파일 비교 명령적 접근방식 선언적 수행방식 개별 명령어를 쳐서 접근하고 실행시킨다 파일 기반으로 상태가 적용되고 수정된다. docker run과 유사 docker compose 와 유사 197. 배포 구성 파일 생성하기(선언…

April 23, 2024
til
backend
docker-kubernetes ) til - 20240421

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 195. Deployment 롤백 & 히스토리 rollout undo image를 잘못 설정 하는 등의 문제가 발생할 수 있다. 이렇게 된 상태에서 상태를 보기 위해서는 rollout 커맨드를 활용할 수 있다. 이렇게 되면 문제가 발생하고 이때 상태를 보고자 커맨드를 활용하면 대화용 세션으로 들어가게 된다. 실제로 이렇게 되면 대시보드에서도 pod에 문제가 발생하게 된다. 오래된 복제본이 종료가 발생하지 않으며, 신규 pod은 계속 pending 상태를 유지하는 것이다. 이렇게 되는 이유는 kubernetes에서는 정책상 신규 pod 가 정상 실행 전 까지는 이전 이미지를 담은 구버전 pod 가 종료되지 않으며, 이를 통해 서비스가 계속 유지 되도록 만드는 것이다. 이러한 에러가 발생해서 다시 정상적인 버전으로 이미지를 돌려야 한다. 이렇게 하고 나니 pod 의 문제가 해결되고 기존 버전으로 돌아오게 된다. r…

April 21, 2024
til
backend
docker-kubernetes ) til - 20240420

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 192. 컨테이너 재 시작 실습에서 /error 이라는 라우팅과 함께 Node 예제를 종료 시키는 코드를 갖고 있었다. 해당 URL 에 접근하게 되면, process 가 종료하게 되면서 에러가 발생하게 된다 . 이때 이렇게 되는 것은 pod와 pod의 컨테이너 상태를 모니터링 되고 있고, 모닌터링 과정에서 실패가 발생하면 다른 걸로 교체가 되거나 하는게 아닌, 일단은 해당 pod와 pod 내의 컨테이너를 다시 시작한다. 또한 이 내용은 kubernetes dashboard에서도 볼 수 있는 것이다. 또한 해당 pod로 들어가면 세부적으로 그러한 행동이 나타났다는 로그 등도 함께 확인이 가능하다. 193. 실제 스케일링 재시작과 관련한 유용한 명령이 하나 더 있다. 오토 스케일링 기능이 없다고 생각하면 kubectl 은 자동으로 pod의 숫자를 늘리거나 줄이지 않는다. 이럴 때 트래픽이 더 많이 유입될 것이라고 …

April 20, 2024
til
backend
docker-kubernetes ) til - 20240416

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 188. 첫 번째 Deployment - 명령적 접근 방식 사용 쿠버네티스를 배우면서 생기는 가장 기본적인 망각 중에 하나가, 바로 도커를 결국 사용은 한다는 점이다. 반대로 도커를 자체적으로 컨테이너를 실행하지 않는 다는 것이다. 필요한 프로그램, 도커 파일이 준비되어 있다면 docker 이미지를 준비한다. 이미지가 빌드 되고 나면 이미지를 이제 쿠버네티스 클러스터로 보내면 된다. (Pod) Pod 가 이를 실행하고 관리할 것이다 deployment 올릴 쿠버네티스에 상태를 파악해야 하므로 minikube status 로 상태를 파악한다. 이때 동작하는 minikube가 정상이 아니라면, 다시 minikube를 재시작 하면 된다. kubectl 을 기억하자. : 지난 시간에 이 툴을 설치했음. 해당 툴은 항상 로컬 기준으로 존재하고, 로컬 시스템에서 실행하는 명령이다. 마스터 노드와 해당 클러스터의 컨트롤러라고 …

April 16, 2024
til
backend
docker-kubernetes ) til - 20240320

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 183. Kuberntes: 요구 설정 & 설치 단계 로컬 머신에서 쿠버네티스를 다루기 위해 설치해야 할 구성요소는 다음과 같다: 클러스터: 쿠버네티스 클러스터는 마스터 노드와 하나 이상의 워커 노드로 구성되며, 이 클러스터는 실제 머신이나 가상 인스턴스에 분산되어 운영될 수 있다. 마스터 노드 소프트웨어: 마스터 노드에는 쿠버네티스의 핵심 구성 요소인 API 서버, 스케줄러 등이 설치되어야 한다. 워커 노드 소프트웨어: 워커 노드에는 Docker와 같은 컨테이너 런타임과 kubelet이 설치되어야 한다. kubectl: 쿠버네티스 클러스터와 통신하기 위한 커맨드 라인 인터페이스 도구로, 개발자와 관리자는 이를 사용하여 클러스터에 명령을 보낼 수 있다. 로컬에서 쿠버네티스를 실험하기 위해서는 다음 도구도 필요하다: minikube: 로컬 머신에서 쿠버네티스 클러스터를 쉽게 생성하고 관리할 수 있는 도구로, 가상 머…

March 25, 2024
til
backend
docker-kubernetes ) til - 20240320

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 181. 모듈 소개 본 모듈에서 진행할 학습 내용은 총 3단계 Kubernetes, 테스팅 환경 구축해보기 Kubernetes 객체들과 작업 진행해보기 실제로 예제를 통해 배포를 진행해보기(local 환경으로) 182. Kubernetes 는 인프라를 관리하지 않습니다. 쿠버네티스가 해주는 작업과 아닌 작업을 구분을 명확하게 하는 것이 해당 도구를 효과적으로 사용하는 가장 핵심 중에 핵심이다. 쿠버네티스가 할 수 없는 것은 머신의 구체적인 가상 인스턴스나 컴퓨터에 대해 전혀 모르며 쿠버네티스 API 서버, Kublet 및 다양한 서비스는 매뉴얼하게 스스로 설정해줘야 한다. 인스턴스나 시스템을 업데이트 하고, 운영체제 업데이트를 유지하며, 전체 네트워크 보안 그룹 항목의 관리 등은 결국 개발자의 몫이다. 쿠버네티스가 관심 가지는 영역은 실패한 컨테이너에 대해선 관심을 가진다. 포드를 생성, 포드에서 컨테이너를 실행…

March 20, 2024
til
backend
docker-kubernetes ) til - 20240315

kubernetes 가 정확히 무엇인가? 쿠버네티스는 기존 강의에서 언급한 수동으로 배포 및 웹 프로바이더들에 제약이 되는 등의 문제를 개선하는, 어떤 웹 클라우드 서비스에서도 독립적으로 구축이 가능한 오픈소스 시스템이다. 컨테이너 배포 관리, 컨테이너 오케스트레이션 가능, 자동 배포, 스케일링, 로드 밸런싱, 배포나 관리 등을 전반적으로 도와준다. 특히, 컨테이너를 모니터링하다, 다운이 되면 자동으로 교체하는 등에서 도움이 된다. kubernetes configuration 만 작성하면 쉽게 구성이 가능하다. 더불어 특정 도구로 클라우드나 어떤 머신이든 해당 속성으로 자동으로 배포 및 설정을 가능케 해준다.(즉 표준일 뿐 아니라 도커-컴포즈에서 좀더 확장되어 서버 전체를 설정, 관리 정책을 담은 일종의 통합 도구인 셈이다.) 여기에 더 나아가서 혹여 특수한 클라우드 프로바이더들 사이에 옵션을 추가하면, 해당 클라우드 프로바이더에 특화도 가능하며, 반대로 다른 클라우드에서 사용시 …

March 15, 2024
til
backend
도커-쿠버네티스) til - 20240312

색션 11. Kubernetes 시작하기 모듈 소개 도커 컨테이너 배포 섹션에서 도커 컨테이너를 배포하는 방법은 배웠음 쿠버네티스란 실제로는 도구라기 보단 프레임워크, 개념 모음, 표준 이라고 할 수 있다. 모듈 컨텐츠 컨테이너 배포를 할 때 생기는 문제 이해하기 쿠버네티스가 무엇이며 왜 써야 하는가? 쿠버네티스의 개념과 컴포넌트들 수동 배포의 더 많은 문제점들 쿠버네티스 공식 사이트를 찾아보면 쿠버네티스에 대하여 “Kuberneetes is an open-source system for automating deployment, scaling, and management of containerized applications” 라고 부른다. 이를 통해 알 수 있는 것은 쿠버네티스가 단일 소프트웨어가 아닌 시스템이란 점이다. 컨테이너 배포에 도움이 되는 일체를 갖고 있다는 것을 알 수 있다. 우리는 아마도 문제 상황에 직면하게 된다. 컨테이너를 수동으로 배포하는 것에 대해 생각해보자.…

March 12, 2024
til
backend
[peer] 피어 알림 시스템 구축을 위한 고민 정리

Next Peer 를 위한 고민 : 시작 피어 웹 서비스의 구현의 목적은 총 3단계로 구성되어 있다. 기획의 핵심은 순환이다. 프로젝트, 스터디의 핵심은 결국 계속해서 타인과 타인 사이에서도 남아야 하며, 만드는 사람들은 목적을 쉽게 달성하며, 동시에 쉽게 자기나 자신의 결과물을 잘 보이는게 핵심이다. 그걸 위해 시작하는 모집글 작성에서 시작하여 협업을 위한 허브 역할의 팀 페이지와 게시판, 쪽지, 그리고 최종적으로 쇼케이스나 피어로그와 같은 것들이 협업의 과정에서의 순환과 결과물의 공유와 강조 등을 포함한다. 그런 전체 목표 중에 다음 주 중에 공개될 피어 웹 어플리케이션은 대략 2.3~4 단계정도의 진행 정도를 보여준다. 핵심적인 기획은 아직 적용이 안되어 있으며, 특히나 프론트의 딜레이와 버기한 상황들은 앞으로 해당 내용의 확장, 혹은 진화에 조금 더 시간이 걸릴 것으로 보인다. 어쨌든 프론트의 딜레이와 보안을 하려고 하다보니 시간이 남게 되었고, 덕분에 조금 더 백엔드 구…

February 09, 2024
backend
project