공부하고 기록하는, 경제학과 출신 개발자의 노트

분류 전체보기 499

Kubernetes Deep Dive - (2). Cluster Management

k8s High Availability (availability in Cluster) k8s 자체가 high availability를 달성하기 위해 만들어진 SW. Application Availability와 Cluster Availability는 별도의 개념(aspect)이다. Cluster의 Availability는 infra 레벨이므로, infra (that application is executing) Availability is important in production environment. k8s는 High Availability를 위해 multiple control plane 구조를 사용한다. 즉 multi-master, multi-worker Topology로 되어 있다. Multipl..

Kubernetes Deep Dive - (1). 구성요소

Why Kubernetes Docker Container의 Orchestration Tool 컨테이너화된 애플리케이션을 배포하는 등, manage 작업을 자동화할 수 있는 오픈소스 도구 주어진 제약조건에 맞게 컨테이너를 클러스터 노드에 배포하는 것 Health Check + Healing. 특정 노드에 문제가 있을 경우 자동으로 조치 rolling updates / rollbacks. 서비스 downtime 없이 배포가 가능하며, 문제 있을 경우 롤백도 용이함 storage 시스템을 붙이기도 편리하며 Secret 관리도 지원함. Architecture of Kubernetes 기본적으로는 Master - Slave 아키텍처. Master Node: Cluster Management의 핵심이자, admin..

K8s-Native Serverless Framework - kubeless 정리

cf. kubeless는 2021년 12월을 끝으로 maintain이 종료되었다. 아무도 관리하지 않는 오픈소스라는 의미. 프로젝트 경로도 vmware-archive로 이동된 것을 확인할 수 있다. https://github.com/kubeless/kubeless GitHub - vmware-archive/kubeless: Kubernetes Native Serverless Framework Kubernetes Native Serverless Framework. Contribute to vmware-archive/kubeless development by creating an account on GitHub. github.com 혹시라도 이 포스트를 검색해서 들어왔다면, kubeless라는 프레임워크보다..

[Python] 프로그래머스. 타겟 넘버 (Level 2)

https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 만들 수 있는 모든 조건을 순회하면서 조건에 맞는 정답 개수를 찾도록 만들면 된다. dfs, bfs를 사용할 수도 있지만, 이 방식이 좀더 직관적이었다.

gRPC (4) - Client Streaming 개념 및 예제코드

Client Streaming 클라이언트가 여러 번 서버에 데이터 전송, 클라이언트가 응답을 언제 받을 수 있는지는 전적으로 서버에게 달려있다. 실습환경은 아래와 같은 디렉토리에서 이루어졌다. go를 설치하고 환경변수로 GOPATH를 등록한 상태로, 모든 명령어는 ~/go/src/ch4 에서 이루어졌다. 1. proto 파일 생성 greetpb 디렉토리에 greetpb.proto 파일을 생성하고 아래와 같이 입력해준다. syntax = "proto3"; package greet; option go_package="greet/greetpb"; message Greeting { string first_name = 1; string last_name = 2; } message LongGreetRequest {..

gRPC (3) - Server Streaming 개념 및 예제코드

Server Streaming cf. 예제코드는 go 개발환경과 protoc-gen-go 디펜던시가 갖추어졌다는 전제로 작성되었다. Http2의 특징을 활용한, 새로운 형태의 RPC API. 클라이언트의 요청 한 번으로, 서버가 데이터를 여러 번 전송할 수 있는 형태. 실습환경은 아래와 같은 디렉토리에서 이루어졌다. go를 설치하고 환경변수로 GOPATH를 등록한 상태로, 모든 명령어는 ~/go/src/ch4 에서 이루어졌다. 1. proto 파일 생성 greetpb 디렉토리에 greetpb.proto 파일을 생성하고 아래와 같이 입력해준다. syntax = "proto3"; package greet; option go_package="greet/greetpb"; message Greeting { str..

gRPC (2) - Unary 개념 및 예제코드

cf. 예제코드는 go 개발환경과 protoc-gen-go 디펜던시가 갖추어졌다는 전제로 작성되었다. Unary 일반적으로 생각하는 Client - Server간 일대일 메시지 통신. Hands on 실습환경은 아래와 같은 디렉토리에서 이루어졌다. go를 설치하고 환경변수로 GOPATH를 등록한 상태로, 모든 명령어는 ~/go/src/ch4 에서 이루어졌다. 1. proto 파일 생성 greetpb 디렉토리에 greetpb.proto 파일을 생성하고 아래와 같이 입력해준다. syntax = "proto3"; package greet; option go_package="greet/greetpb"; message Greeting { string first_name = 1; string last_name = ..

빠르게 정리하는 데이터베이스 (2) - MySQL Stored Procedure

Stored Procedure SQL은 근본적으로는 non-procedure Language이지만, Stored Procedure가 있기 때문에 procedural Language 취급을 받기도 한다. 반복되는 작업 수행을 위해 서버에 저장해 둔 일련의 명령을 의미함. compiled Language만큼 빠르진 않지만 속도도 나쁘지 않음. Application Independent. 애플리케이션 구현 언어에 독립적으로 작동 가능하다. 애플리케이션에 필요한 기능을 모아두고, 매번 sql문을 생성하고 실행할 때보다 시간 / 돈 절약이 가능함. 애플리케이션은 DB와 통신하는데, 보통 여기가 bottleNeck인 경우가 많음. 직접 쿼리를 internet 통해서 DB 서버로 전송할 경우, 인터넷 속도가 곧 애플..

[Python] 프로그래머스. 2021 카카오 인턴 - 표 편집 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 백준의 '키로거' 문제에서 영감을 얻어 풀 수 있었던 문제. 선택 위치를 기준으로 왼쪽을 Left, 오른쪽을 right으로 두고 left의 최댓값 < right이 최솟값이 되도록 양쪽을 heap 자료구조로 저장하면 되는 문제. 순서를 기억하기 쉽도록 배열의 index를 사용한다. https://inspirit94..

[Python] 프로그래머스. 2021 카카오 인턴 - 거리두기 확인하기 (Level 2)

https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 간단한 그래프 문제. 5 * 5 배열 조건이라서 연산량이 그렇게 많지는 않다. dfs / ..