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

학습일지 197

Kubernetes Deep Dive - (3). Object Management

k8s Object Management kubectl get kubectl describe kubectl create kubectl apply kubectl delete kubectl exec : docker exec와 비슷하게 쓰인다고 보면 됨. create와 apply의 차이? 이미 존재하는 Object일 경우 create로 명령어를 실행하면 에러 리턴, apply는 해당 object를 수정함. Rule Based Access Management (RBAC) Role: 특정 namespace를 기반으로 Role 설정 ClusterRole : namespace 관계없이 클러스터 기준으로 Role 설정. 생성한 Role을 사용자 (User)와 Bind하는 객체가 존재한다. Role과 User는 M:N 매..

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라는 프레임워크보다..

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 서버로 전송할 경우, 인터넷 속도가 곧 애플..

빠르게 정리하는 데이터베이스 (1) 기본개념, DB Structure

introduction What is SQL? (DB Management) SQL : 데이터베이스 서버가 Constructing Statements을 실행할 수 있도록 지원하는 데이터베이스용 언어. Database - 저장하고 싶은 데이터를 저장할 수 있는 공간. 정확한 정의는 "DBMS의 관리하에 놓여 있는 Persistent Data의 집합." Persistent Data : 일반적으로 컴퓨터 램에 올라간 데이터는 애플리케이션이 종료되면 사라짐. 애플리케이션이 종료되거나 컴퓨터가 꺼져도 계속 보존되는 데이터를 말함. DBMS : persistent Data가 저장된 데이터베이스를 관리하기 위한 서버. ex) MySQL. SQL을 실제로 데이터베이스에서 작동할 수 있도록 실행하며, 쿼리 최적화도 담당한..

gRPC (1) - gRPC의 특징 및 성능확인

Problem statement 논리적으로는 분리되어 있지만 Monolitic하게 설계된 애플리케이션이 있다고 가정하자. 내부 모듈 간 통신 속도가 빠르다는 장점 하나의 모듈에 문제가 생길 경우 애플리케이션 전체가 영향을 받음 (특정 모듈이 메모리를 과도하게 점유할 경우 시스템 전체가 죽는다던가) 그렇다보니 애플리케이션의 구조를 MicroService로 변경하려는 추세. 따라서 각각의 business / subdomain별로 별도의 시스템을 생성한 뒤 Http, Json으로 통신하는 형태의 아키텍처. Http + Json 기반 MicroService의 단점으로 생각할 수 있는 점 요청 / 응답에 걸리는 시간. 오른쪽 그림처럼, TCP 커넥션을 맺은 후에야 Request / Response를 받아올 수 있..