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

학습일지 199

Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 2. 활용

L7 based Load balancing 기본적으로 L4 로드밸런서 method 제공. L7에서 받을 수 있는 데이터 기반으로 많은 기능을 추가로 제공함. 네이버에서는 각 서비스 단위별로 운영하며, host header 기반 Route 아키텍처. Path based Route L7 로드밸런서의 특징. 클라이언토 요청을 url path 기준으로 정의된 패턴에 부합하는 origin으로 라우팅. 하나의 도메인에서도 static / dynamic 콘텐츠의 origin 분리해서 활용할 수 있음. Circuit Breaker 모든 origin에서 정상 응답이 불가능한 상황이 되면, 정상 연결될 때까지 다른 origin 군으로 연결해주거나 직접 응답하는 기능. nfront가 redirect / static erro..

Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 1. 기술

https://tv.naver.com/v/23651836 NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 NAVER Engineering | 공진호/김해랑 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 tv.naver.com Naver 암호화 트래픽을 책임지는 https 플랫폼 기술 SSL Termination / PassThrough termination : 암호화 트래픽의 연산작업을 대행해주는 기능. back에 있는 서버는 복호화되어 있는 데이터만 처리함. 리소스 효율화 / 백엔드의 외부 노출이 방지되어 보안에 유리한 솔루션. nFront 플랫폼이 오픈하던 시기는 2018년. 브라우저가 https를 디폴트 통신으로 설정하는 추세, https 아닐 경우 경고메시지 표시... ..

DevNation Day 2020 - Knative Backstage (how autoscaler actually works)

Knative BackStage - how autoscaler Actually works https://youtu.be/sh9mfUExX9o Paul Morie. Serverless Engineering team at RedHat 일반적으로 Serverless 하면 Function as a Service나 AWS Lambda를 떠올린다. 그 정도 full experience를 다루는 건 아니고 Enabling core technology / concept를 다룬다고 보면 됨. Knative Serving: Scaling Application on-demand. Knative Eventing: working with events that are emitted by different sources. Knat..

if kakao 2021 - k8s Cluster 확장, 어디까지 알아보고 오셨어요?

https://if.kakao.com/session/119 if(kakao)2021함께 나아가는 더 나은 세상if.kakao.com Multi-IDC 구축하면서 SLA 확보하기 위한 시도들.  카카오페이는 현재 800여 개 이상의 microservice를 k8s에서 운영중.장애가 날 만한 상황은 예방하기 + 안정적으로 운영 가능한 아키텍처 구축이 필요함.  k8s 운영 시 발생할 수 있는 위험요소들을 정리한 영역k8s cpu 관련 이슈 : limit / 쓰로틀링리눅스 커널 업데이트, pod 개수와 성능 보장 등istio 관련 이슈 - 카카오페이는 service mesh로 istio 쓰는가 보다프로토콜 선택 관련 이슈citadel 인증서 기한 만료envoy의 hot restart fail 이슈hot res..

Writing Beautiful Package in Go

Golang UK Conference 2017 발표. https://youtu.be/cmkKxNN7cs4 go로 개발한 오픈소스 패키지가 여러 사람들에게 유용하고 쉽게 쓰이려면 어떻게 해야 하는지를 설명한 강연 package는 go파일 (_test.go 포함) 로 구성된 하나의 디렉토리. 다른 프로젝트에서 import해서 사용할 수 있음 exported / internal 두 종류가 있음 main 패키지 말고. main 패키지는 command를 의미함 user-centred Design 결국 사람이 쓰는 거니까, 개발하려는 프로덕트의 최종 사용자의 요구사항, 제한조건을 고려해서 설계해야 한다. 따라서 고민해야 할 점 누가 쓸 건지 하려는 건 무엇인지 왜 하려는 건지 굳이 내 패키지를 쓰려는 이유는 뭔지 ..

Go - Context 정리

Context Package https://youtu.be/mgJMIZsWfB4 go의 다양한 패키지에서 사용되고 있는 Context Context의 기능은 크게 세 가지. Deadlines Concellation Signals Request-scoped values Deadline - withTimeout, withDeadline WithDeadline: 시작 시간과 끝 시간을 정하고, 그 시간동안만 실행되도록 (endtime) WithTimeout: 시작 시간을 정하고, 얼마의 시간이 지난 뒤 종료되도록. (Duration) const shortDuration = 1 * time.Millisecond func main() { ctx, cancel := context.WithTimeout(context..

Complete Jenkins Pipeline Tutorial | Jenkinsfile explained 정리

https://youtu.be/7KCS70sCoK0?si=9hFFX18UXpCPfres Jenkinsfile Jenkins 파이프라인의 종류는 크게 두 가지. script : groovy engine으로 직접 실행. node {} 명령어를 사용하며, groovy를 알아야 쓸 수 있음 declarative : 간단하게 파이프라인을 생성할 수 있지만 script에 비해 제약이 있는 편. post 명령어 파이프라인 맨 끝에서 실행할 수 있도록 하는 명령어. always: 성공 실패여부 관계없이 반드시 실행 success : 성공했을 경우 실행 failure : 실패했을 경우 실행 Define Conditional / When, Environment Variable when { expression { }} 형태..

빠르게 정리하는 데이터베이스 (3) Normalization

Database Normalization DB 정규화: 목적저장되는 데이터의 중복을 줄이고불필요한 데이터 변경을 최소화하며단순한 쿼리로 원하는 데이터를 얻기 위함. 예컨대 위와 같은 테이블 구조에서university 이름과 주소는 서로 의존적임. (일반적으로) 이름이 바뀌면 주소도 같이 바뀌어야 함.정규화 관점에서는 이런 형태의 데이터를 Redundancy로 취급한다.따라서, 서로 의존성을 띄고 있는 university 이름 / 주소 정보는 별도의 테이블로 만든 뒤, primary key를 Student 테이블에 매핑한다.제1정규화 (1NF) 확장하기 쉬운 DB 테이블 구조여야 한다.모든 DB 테이블의 value는 atomic해야 한다하나의 컬럼에는 하나의 데이터 타입만 허용한다.컬럼명은 unique해야..

CKA 대비 kubernetes 스터디 - 8. Networking (2)

Networking Cluster Nodes k8s cluster는 여러 개의 노드 - 마스터 노드, 워커 노드 - 가 network interface로 연결되어 있는 형태. 각각의 노드에는 ip address가 매핑되어 있어야 하고, unique hostName이 있어야 하며, 고유한 Mac Address 값이 있어야 한다. 기존 VM을 복사해서 노드를 생성할 때 특히 유의할 부분임. kubernetes 컴포넌트를 실행하고, 컴포넌트 간 통신을 위해 열려 있어야 하는 포트들. https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/#steps-for-the-first-control-plane-node ..

CKA 대비 kubernetes 스터디 - 8. Networking (1)

알아둬야 할 Linux Networking Prerequisite 내용. Basics : Linux Networking A가 B에게 통신하려면? Switch에 연결한다. -> switch는 두 개의 시스템을 연결하는 네트워크를 생성한다. switch에 연결하기 위해서는, 각 호스트가 사용해야 할 인터페이스가 있다. ip link 명령어로 해당 PM / VM의 인터페이스를 확인할 수 있다. 예컨대 예시의 경우 eth0 이라는 이름의 인터페이스가 확인됨. switch 내부의 네트워크가 192.168.1.0 이라고 가정한다면, 두 개의 컴퓨터 A와 B는 아래의 명령어를 사용해서 switch 내부의 네트워크에 자신의 정보를 등록할 수 있다. ip addr add 192.168.1.10/24 dev eth0 ip..