분류 전체보기 1185

Canary Updates

이 글에서는 2022.01.24 - Deployment Strategy - Blue Green 에 이어서 Canary라고 불리는 Deployment Update 전략에 대해 정리한다. Canary Updates Canary Updates의 진행 방식은 아래와 같다. 업데이트 진행 순서 1. 기존 버전의 Deployment이 동작하고 있는 환경에 새 버전의 Deployment을 배포한다. 단, 전체 트래픽의 적은 비율만을 새 버전의 Deployment로 라우팅 되도록 한다. 즉, 이 단계에서는 대부분의 트래픽이 기존 버전의 Deployment로 라우팅되는 상태이다. 2. 새 버전의 Deployment에 대한 테스트가 완료되면, 기존 버전의 Deployment를 새 버전으로 업그레이드(Rolling upda..

[AWS cli] s3 파일/디렉터리 삭제

2021.08.25 - [AWS cli] s3 파일/디렉터리 다운로드 위 글에 이어서, 이 글에서는 s3에 업로드된 파일 또는 디렉터리를 삭제하는 방법에 대해 정리해둔다. 사전 조건 1. aws cli 설치 2. s3 읽기, 쓰기 권한 aws s3 rm aws s3의 하위 명령어는 리눅스의 파일/디렉터리 관련 명령어와 유사하게 cp, mv, ls 등의 명령어를 지원한다. 단일 파일 삭제 aws s3 rm # 예시 aws s3 rm s3://test/rm_test/while.sh 참고로 아무 파일도 존재하지 않는 디렉터리는 자동으로 경로가 삭제된다. 디렉터리 삭제 특정 디렉터리 아래의 파일을 전부 다룰 때에는 --recursive 옵션을 사용한다. aws s3 rm --recursive # 예시 aws s..

AWS 2022.01.25

Deployment Strategy - Blue Green

2021.08.07 - Rolling Updates & Rollbacks in Deployments 위의 이전 글에서 Deployment의 update 전략 중 recreate 전략과 rolling update 전략을 정리했었다. 그 내용을 간단하게 요약하면 아래와 같다. Deployment Strategy - Recreate 기존 버전의 Pod를 모두 삭제한 후, 새 버전의 Pod를 한꺼번에 생성하는 방법 기존 버전을 중지하고 새 버전이 정상적으로 동작할 때까지 서비스 중단이 발생한다. Deployment Strategy - Rolling Update 기존 버전의 Pod 하나를 삭제한 후, 새 버전의 Pod 생성을 반복하는 방법 서비스 중단이 발생하지 않으며 Deployment Upgrade Start..

[Python] input VS sys.stdin.readLine

input과 sys.stdin.readLine 간 속도 차이가 나는 이유에 대해 간단히 적어둔다. Python 2.X Python 2에서 사용자 입력을 처리하기 위한 함수는 input과 raw_input이 존재하며, 그 기능은 아래와 같다. input : 입력 받은 값을 evaluate하여 적절한 자료형으로 초기화하여 반환한다. raw_input : 입력 받은 값을 문자열로 반환한다. 따라서 입력 받은 값을 별도 처리하여 저장하는 input 함수가 상대적으로 느리다. 그렇다면 Python 3에서도 동일할까? 그건 아니다. Python 3.X Python 2에서 사용자 입력을 처리하기 위한 함수 중 raw_input은 삭제되었고, input이 raw_input을 대체하게 되었다. 즉, Python 3의 i..

Python 2022.01.23

Operator Framework

Operator Framework Custom Resource Definition(사용자 정의 리소스 정의, CRD)와 Cutom Resource를 관리하는 Custom Controller(사용자 정의 컨트롤러)는 별개의 객체이다. 또한, Custom Resource를 사용하기 위해서는 CRD와 Custom Controller를 수동으로 생성 및 배포해야 한다. Operator Framwork는 이 두 개의 객체를 단일 객체로 배포할 수 있도록 패키징 한 것이다. 즉, Operator를 배포함으로써 내부적으로 CRD 및 리소스를 생성하고 Controller를 Deployment로 배포할 수 있다. Operator와 관련된 정보는 아래 hub에서 찾을 수 있다. https://operatorhub.io/ ..

[BOJ] 10808 - 알파벳 개수

문제 https://www.acmicpc.net/problem/10808 알파벳 소문자로만 이루어진 단어 s를 입력받아, 단어의 각 알파벳의 개수를 구하여라. 풀이 내 풀이 리스트 컴프리헨션과 count 함수를 이용해 각 알파벳의 개수를 저장한 리스트를 구하고, 그 리스트 내용을 공백으로 값을 구분하여 출력한다. 리스트에 저장할 때 데이터형을 문자열로 저장하여 형변환하는 점을 회피했다. import sys s = sys.stdin.readline() print(" ".join([f"{s.count(chr(i))}" for i in range(ord("a"), ord("z") + 1)])) 다른 사람 풀이 아래와 같이 map 함수를 이용해 해결할 수도 있다. import sys print(*map(sys...

Algorithm/백준 2022.01.21

Custom Controllers

Controllers는 ETCD에 저장된 객체의 상태를 모니터링하고, 객체를 생성/수정/삭제한다. 또한, 반복해서 동작하는 프로세스 또는 코드이며 지속적으로 쿠버네티스 클러스터를 모니터링하면서 특정 객체의 이벤트를 감지한다. 그중 Custom Controllers는 사용자 정의 리소스(Custom Resources)를 관리하는 컨트롤러에 해당한다. Custom Controllers 코드 작성은 필요하지만, 인증과 같은 공통 태스크 처리를 구현한 클라이언트 라이브러리를 사용하면 되기 때문에 API 호출 맟 요청/응답을 직접 구현할 필요는 없다. 클라이언트 라이브러리 https://kubernetes.io/ko/docs/reference/using-api/client-libraries/ 구축 방법 1. 개발..

[BOJ] 4375 - 1

문제 https://www.acmicpc.net/problem/4375 2와 5로 나누어 떨어지지 않는 정수 n을 입력받아, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하라. 출력은 n의 배수 중 가장 작은 자리수를 출력한다. 풀이 1로 이루어진 숫자가 n으로 나누어 떨어지는지 찾으면 된다. 방법은 아래와 같다. 1. n을 입력받는다. (반복) 2. 1로 이루어진 숫자가 n으로 나누어떨어질 때까지 숫자를 증가시킨다. 3. 1로 이루어진 숫자가 n으로 나누어떨어지면 숫자의 길이를 출력한다. 코드 import sys for n in sys.stdin: # n 입력 if n == '\n': exit() # 입력 종료 num = 1 # 1로 이루어진 숫자 while True: if num % int(n) ..

Algorithm/백준 2022.01.19

Custom Resource Deifinitions

Resources Kubernetes는 pod, deployment와 같은 리소스를 생성하고, 해당 정보는 ETCD에 저장한다. 즉, 리소스를 생성하고 삭제하는 작업은 ETCD에 리소스를 생성하고 삭제하는 것과 동일하다. Controllers 실질적으로 Resource 생성 및 관리를 수행하는 주체로, Deployment 리소스를 관리하는 Controller는 Deployment Controller에 해당한다. 백그라운드로 실행되는 프로세스이며, 관리하는 리소스를 지속적으로 모니터링하며 설정 정의된 상태를 유지한다. Controller는 GO로 개발되어, Kubernetes에 기본 내장되어 있어 별도로 생성할 필요가 없다. Custom Resources Kubernetes 기본 리소스 외의 사용자 정의 ..

[Git] git init 취소

git init cd /YOUR/PROJECT/PATH git init 버전 관리를 하지 않는 프로젝트를 Git으로 관리하기 위해 기존 디렉터리를 Git 저장소로 만든다. 명령을 실행하면 디렉터리에 .git이라는 하위 디렉터리를 생성하며, 이 디렉터리는 데이터를 저장하고 관리하는 데 사용된다. 이 디렉터리를 복사하면 저장소를 백업하는 것이다. git init 취소 git init을 취소하고자 할 때에는, git init 명령을 통해 생성된 .git 디렉터리 자체를 삭제하면 된다. cd /YOUR/PROJECT/PATH rm -r .git 참고 문서 https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-Git-%EC%A0%80%EC%9E%A5%EC..

Git | GitLab 2022.01.17