본문 바로가기

공부292

[대규모 시스템 설계 기초] 5장 - 안정 해시 (Consistent Hash) 설계 # 서론 수평적 규모 확장을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. -> 이 목표를 달성하기 위해 보편적으로 안정 해시 기술을 사용함 이 해시 기술이 풀려고 하는 문제를 자세히 살펴보자 # 일반 해시 함수의 해시 키 재배치 (rehash) 문제 N개의 캐시 서버가 있다고 가정해보자 이 서버들에 부하를 균등하게 나누기 위해, 보편적으로는 아래와 같은 해시 함수를 사용한다. serverIndex = hash(key) % N 예를 들어, 서버 대수(N)가 4대일 때, hash(key0) % 4 = 1 이면 데이터를 찾기 위해 1번 서버에 접속하게 됨 이 방법은 서버 풀의 크기가 고정되어 있고, 데이터 분포가 균등할 때 잘 동작한다. 그러나....서버가 새로 추가되거나 삭제.. 2023. 6. 17.
[2023-06-15] 당근 SRE 밋업 3회 내용 정리 한 줄 후기 : 당근은 개발자 경험(DX)에 진심이다. (부럽,,) 제일 놀랐던 점 : SRE팀이 16명이다 (전체 엔지니어는 200명 넘는 듯) (플랫폼?파트, 클라우드 파트, 클러스터 파트) 내가 나중에 만들고 싶다고 생각한 플랫폼 다 만들어져 있음 나도 나중에 꼭 만들어야지...... 아래는 밋업 당시 그 자리에서 바로 정리하며 적은 내용들이며, 정리가 덜 되어있을 수 있습니다. 1️⃣ 당근마켓 개발자 플랫폼: 지난 2년간 무엇을 만들었는가? (변정훈) https://blog.outsider.ne.kr/ SRE (전체 인프라 관리) -작업(자동화: 스크립트, IaC)-> 인프라 입장 차이 서비스 개발 - 빠른 변경, 다양한 시도 SRE - 안정적 운영, 정책 적용, 일관된 형태, 승인 양쪽 모두 불.. 2023. 6. 17.
[Terraform/k8s] gp2 Storage Class patch eks를 만들면, gp2 storage class가 자동으로 같이 생성되어 있다. https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html Storage classes - Amazon EKS Storage classes Amazon EKS clusters that were created prior to Kubernetes version 1.11 weren't created with any storage classes. You must define storage classes for your cluster to use and you should define a default storage class for your persistent vo.. 2023. 6. 5.
[Lambda/Python/Slack] 가볍게 슬랙 메세지 보내기 Slack App을 만들고, Incoming Webhook을 원하는 채널에 생성해둔다. import json import urllib3 SLACK_URL = "https://hooks.slack.com/services/.../.../..." MESSAGE = "Lambda Trigger Test" def lambda_handler(event, context): message = { 'text': MESSAGE } http = urllib3.PoolManager() response = http.request('POST', SLACK_URL, body=json.dumps(message).encode('utf-8'), headers={'Content-Type': 'application/json'}) if re.. 2023. 5. 30.
[AWS] ELB Target Group - IP & Instance Type 억까 https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/load-balancer-target-groups.html#registered-targets Network Load Balancer 대상 그룹 - Elastic Load Balancing Network Load Balancer 대상 그룹 각 대상 그룹은 하나 이상의 등록된 대상에 요청을 라우팅하는 데 사용됩니다. 리스너를 생성할 때 기본 작업에 대한 대상 그룹을 지정합니다. 트래픽은 리스너 규칙 docs.aws.amazon.com IP & Instance Type : C1, CC1, CC2, CG1, CG2, CR1, G1, G2, HI1, HS1, M1, M2, M3, T1 인스.. 2023. 5. 24.
[Docker] CentOS 기반 리눅스 Docker 관련 초기 세팅 # docker yum install -y docker systemctl start docker chkconfig docker on # docker-compose curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 2023. 5. 21.
[Docker] MAC에서 Host Network 사용하기 테스트용 Dockerfile FROM ubuntu RUN apt update RUN apt-get install -y net-tools iproute2 dnsutils ENTRYPOINT ["/bin/bash", "-c", "sleep 100000000"] 기본 네트워크인 Bridge 로 컨테이너를 띄우는 경우 # ifconfig eth0: flags=4163 mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 784 bytes 1123147 (1.0 MiB) RX errors 0 dropped 0 overruns 0 frame.. 2023. 5. 21.
[Sonarqube] Community Edition & PR decorate Plugin docker-compose version: "3" services: sonarqube: image: mc1arke/sonarqube-with-community-branch-plugin container_name: sonarqube ports: - "9000:9000" - "9092:9092" networks: - sonarnet environment: - SONARQUBE_HOME=/opt/sonarqube - SONARQUBE_JDBC_USERNAME=sonar - SONARQUBE_JDBC_PASSWORD=sonar - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar volumes: - sonarqube_conf:/opt/sonarqube/conf - sonarqube_data:/op.. 2023. 5. 17.
[Terraform] Plan만 가능한 권한? Read-Only 권한을 주면 plan만 가능합니다. 2023. 5. 15.
[MSK Connector] Bigquery용 Connector 구성 BigQuery용 MSK Connector를 만드는 레퍼런스가 거의 없어서 챗지피티 도움을 많이 받았다. GCP Key File을 AWS Secret Manager에 등록해둔 후 Connector에서 해당 시크릿을 읽어오는 식으로 만들면 된다. Connector configuration file connector.class=com.wepay.kafka.connect.bigquery.BigQuerySinkConnector autoCreateTables=true tasks.max=2 topics={TOPIC명} project={PROJECT명} gcp.secret={SECRET MANAGER ARN} defaultDataset={DATASET명} MSK Connector용 IAM Role에 해당 시크릿을 D.. 2023. 5. 9.
[pre-commit] local repository 사용하기 # Git Hook이란? https://git-scm.com/docs/githooks Git - githooks Documentation Hooks are programs you can place in a hooks directory to trigger actions at certain points in git’s execution. Hooks that don’t have the executable bit set are ignored. By default the hooks directory is $GIT_DIR/hooks, but that can be changed via the c git-scm.com commit이나 push같은 이벤트 발생 시 동작 .git/hooks 폴더를 확인하면 여러 hook들.. 2023. 5. 8.
[CKA] 2023-04-22 합격 후기 4월 22일에 CKA를 땄다. 이전부터 따야지 따야지 했었는데, 막상 일 하면서 병행으로 준비하기가 힘들었었는데 (사실 의지 부족...) 이직하면서 백수 기간이 3주 생기면서 이참에 따게 되었다. 백수 기간 3주 중 첫 1주는 롤체로 버리고 😅 2주동안 준비하여 시험을 보게 되었다. 다만 난 이전에 준비를 하다 만 적이 있었고, 쿠버네티스 운영을 업무로 해왔기 때문에 남들보다 적게 준비했던 것 같다. 어디 오픈톡방에서 누가 알려줘서 30%쿠폰을 사용하여 등록했다. 몰랐는데, 시험 등록 == 시험 일정 잡기 가 아니었고, 시험을 등록해 두면 1년 내로만 시험을 치면 되는 구조였다. 재시험의 기회도 있었고... 남들 하는대로 뭄샤드 강의 들었고, 뭄샤드 강의 끝 Mock Exam 여러 번 열심히 풀었다. C.. 2023. 4. 30.
[NHN Cloud] VPC부터 Instance 접속까지 (AWS와 비교) 기회가 되어 NHN Cloud를 좀 뒤적거려 봤다. 기본적인 세팅 했던 방법을 남기며 AWS와의 다른점 등을 같이 남겨두려고 한다. 계정 및 프로젝트 세팅은 다루지 않는다. # 0. Architecture 간단하게 아래 아키텍처를 세팅하고, Public Subnet의 Bastion Instance를 통해 Private Instance까지 SSH 접속을 해보도록 하겠다. 아키텍처를 보면 알겠지만 AWS와는 벌써 다른 부분이 보인다 : Subnet은 가용 영역(AZ) 종속이 아니다. 일단 해보자! 🚀 # 1. VPC 세팅 1-1 VPC Network > VPC > + VPC 생성 원하는 VPC 이름과 CIDR Block을 작성해준 후 생성 완료 1-2 Internet Gateway Network > Inte.. 2023. 3. 11.
[Terraform/AWS] EC2를 Directory Service에 Seamlessly하게 join시키기 콘솔에서 진행 시엔 적절한 EC2 Role과 Directory Service를 지정해주면 된다. 그러나 API로는 EC2 생성 시 Directory Service를 연결해주는 옵션이 없고, SSM Document를 사용해야 한다. locals { domain = "honglab.com" ec2role_policies = [ "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore", "arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess", ] } ## Directory Service resource "aws_directory_service_directory" "this" { name = local.domain ## 필.. 2023. 1. 16.
[kubernetes] Taints, Tolerations vs Node Affinity (요약) # Ref 유데미 뭄샤드 강의 # Taints & Tolerations 특정 Pod가 특정 Node에 스케줄될 수 있는지에 대한 제한 Taint : Node에 설정 해당 Taint를 Toleration할 수 있는 Pod만 해당 Node에서 뜰 수 있음 그러나 해당 Pod는 해당 Node를 Prefer (선호)할 뿐, 무조건 해당 Node에만 뜨는 것은 아님. 즉, A Pod만이 Node01에 뜰 수 있도록 보장할 순 있지만, A Pod가 Node01에 배치되는걸 보장할 수 없음 Blue Taint-Toleration / Red Taint-Toleration 되어있을 때, A : 1을 선호하지만 3에도 배치 가능 B : 2를 선호하지만 3에도 배치 가능 C : 1, 2에 배치 불가능하기 때문에 3에만 배치.. 2022. 12. 13.