일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 쿠버네티스
- alb
- K8S
- Python
- nodejs
- 쿠베네티스
- 백엔드 개발자
- 가비지컬렉션
- 회고
- 싱글톤 디자인 패턴
- Django
- 분산처리
- 2022년
- EKS
- Alembic
- AWS
- 로드밸런서
- 캐시서버
- 메모리구조
- gunicorn
- 스레드풀
- 스케줄링
- 멀티스레드
- CPU스케쥴링
- SQLAlchemy
- FastAPI
- golang
- uvicorn
- 글또
- nestjs
- Today
- Total
목록분류 전체보기 (26)
서버에서 살아남기

01. 개념 오픈 소스 프로젝트이며, 컨테이너 배포관리 / 컨테이너 오케스트레이션 / 스케일링 / 모니터링 등 컨테이너 배포 관리를 도와주는 것입니다. 02. 구성 쿠버네티스는 아래 이미지와 같이 클러스터 안에 마스터 노드와 워커 노드로 구성되어 있습니다. 2-1. 워커노드 Worker Node 는 EC2 인스턴스와 같은 하나의 가상머신입니다. Worker Node 는 Kublet, Docker, Kube-proxy, 그리고 pod 로 구성되어 있습니다. 01. Pod pod는 하나 이상의 어플리케이션을 가지고 있으며 가장 작은 단위입니다. pod는 마스터 노드에 의해 관리가 됩니다. pod 내부에는 하나 이상의 컨테이너를 가집니다. 워커 노드 안에는 동일한 pod가 여러개 있을 수도 있고(트래픽 분산)..

2022년을 끝내면서 1년간의 회고를 기록하려고 한다. "1년 동안 나 진짜 열심히 했고, 좀 쉬어도 돼" 라며 합리화 시키기 딱 좋은 시기에 유럽 여행을 다녀왔다. 런던과 파리를 다녀오며 많은 사람을 만나고 이야기를 나누면서 심경의 변화가 있었다. 2022년 2022년 1월로 돌아가서 그 프로젝트 다시 할래? 라고 묻는다면 절대 하지 않을 것이다. (사랑합니다. 혹여나 이 글을 보게 될 동료분들 ^^ ) 2021년 11월~2022년 7월까지 회사 서비스 전체 리팩터링을 진행했었다. 2022년 6월까지 앱 리팩터링, 2022년 7월까지 어드민/CRM 만들기. 이 기간에는 매일 밤낮없이 일하고, 주말도 다 반납하고 일을 했던 것 같다. 시간을 돌린다면 절대 하지 않을 것이라는 이유는 몇 가지가 있다. 대표..
Printf(서식문자열, 인수1, 인수2..) 구분 설명 %v 데이터 타입에 맞춰서 기본 형태로 출력 %T 데이터 타입 출력 %t true/false를 출력 %d 10진수 정수값으로 출력 %b 2진수로 출력 %c 유니코드 문자 출력 %o 8진수로 출력 %O 0o 가 앞에 붙은 8진수로 출력 %x 16진수로 출력 (10 이상은 a-f) %X 16진수로 출력 (10 이상은 A-F) %f %F 실수값 그대로 출력 (ex.123.456) %s 문자열 출력

1. AWS 에서 EKS 생성하기 1-1. 클러스터 구성 클러스터 서비스 역할은 IAM 서비스에서 생성해줘야합니다. IAM 서비스에서 EKS Cluster 를 선택하여 EKS 에 필요한 모든 권한을 부여할 수 있도록 합니다. 아래의 과정을 통해 IAM 이 생성되면 EKS 생성 시 클러스터 서비스 역할에서 해당 IAM Role 을 선택해줍니다. 1-2. 네트워킹 지정 새 VPC 를 생성하기 위해 CloudFormation 메뉴로 이동합니다. CloudFormation 은 특정 템플릿 기반으로 다른 서비스를 쉽게 생성할 수 있게 해주는 서비스입니다. S3 URL 의 경우 여기를 참고하여 링크를 넣어줍니다. 스택 이름을 입력하고 그 외의 값은 Default 로 둔 후 다음 버튼을 눌러 VPC를 생성합니다. 생..
1. null vs nullable 변수에 null을 할당하고 싶을 땐 '?'를 타입 뒤에 붙여주면 됩니다. 타입 뒤에 ? 가 없다면 null을 할당할 수 없습니다. void main() { String? name = '테스트'; name = null; } null 타입이 들어갈 수 없는 타입이라면 '!' 를 붙여주면 됩니다. void main() { String? name = '테스트'; print(name!); >> 현재 이 값은 null이 아니다. } 2. final vs const 두개 다 선언한 변수에 재할당이 불가합니다. void main() { final String? name = '테스트'; name = '테스트' > 에러 const String? name2 = '테스트'; name2 = ..

성공과 실패를 결정하는 1%의 네트워크 책을 읽고 리퀘스트를 분배한 서버의 부하 분산과 캐시 서버를 이용한 서버의 부하 분산을 정리하려고 합니다. 1. 리퀘스트를 분배한 서버의 부하 분산 분산 처리 : 복수의 서버를 사용하여 처리를 분담하는 방법으로 서버 한 대당 처리량을 줄이는 것 부하 분산의 가장 간단한 방법은 서버를 여러 대 두는 것입니다. 이 방법을 사용할 경우 클라이언트가 보내는 리퀘스트를 웹 서버에 분배하는 구조가 필요합니다. 서버에 엑세스 할 때 DNS서버에 조회하여 IP주소를 조회하는데, DNS서버는 조회가 있을 때마다 차례대로 IP주소를 되돌려줍니다. 예를 들어 http://www.soohyun.co.kr 이라는 서버명이 있고, 192.0.2.10 192.0.2.20 192.0.2.30 ..

1. 기본 개념 1-1. CPU 스케쥴러 메모리에 있는 프로세스들 중 실행할 준비가 되어 있는 ready 상태의 프로세스를 선택하고 그 프로세스에 CPU 를 할당하는 것입니다. 전형적인 프로세스는 하나의 프로세스가 입출력 완료되기를 기다리고 그 이후에 실행되는 메커니즘입니다. 그럼 입출력을 기다리는 대기시간 내내 아무것도 하지 못한 채 놀고 있게 되어 이런걸 생산적으로 하기위해 나온 것이 CPU 스케줄링입니다. 1-2. CPU 스케쥴링의 결정 한 프로세스가 실행 상태에서 대기 상태로 전환 될 때 (ex. 입출력 요청할 때) 프로세스가 실행 상태에서 준비완료 상태로 전환 될 때 (ex. 인터럽트 발생 할 때) 프로세스가 대기 상태에서 준비완료 상태로 전환 될 때 (ex. 입출력 종료됐을 때) 프로세스가 종..

Django 와 Fastapi 두개로 프로젝트를 진행했었고, 두개의 차이를 비교해서 정리하려고 합니다. Django 몸만 오면 된다. Django 는 python 으로 개발하기에 가장 접하기 쉬운 프레임워크입니다. 그래서 러닝커브도 낮고, 많은 python 가발자들이 사용하는 프레임워크 중 하나입니다. 또한 많은 패키지들이 내장되어 있고 제공하는 기본 기능들이 많이 있습니다. 로그인, 회원가입, 인증 뿐만이 아니라 어드민 페이지도 제공합니다. ORM 기반이다. Django 는 ORM(객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것)기반입니다. 그래서 ORM 문법을 알아야 데이터베이스에서 데이터를 쉽게 가져올 수 있습니다. 물론 SQL쿼리문을 사용해도 무관하지만 SQL 쿼리문을 사용하게..