전체 글 586

aws ec2에 카프카 세팅해보기 (공부용 kafka)

kafka setup for ec2 server 회사에서 kafka를 사용해볼 일이 생겼다. 그동안 카프카에 대해 전혀 아는게 없었기 때문에 AWS의 managed kafka (MSK)로 셋업 해 보기 전에 그냥 개인 ec2 인스턴스에 카프카를 띄워보면서 전체적인 내용을 정리해보고자 한다. 카프카는 대용량 대규모 메세지를 빠르게 처리하기 위해서 linkedin에서 개발한 messaging platform이다. 자세한 설명은 다양하고 좋은 글들이 있어서 참고하면 될 듯 하다. (기회가 되면 한 번 정리해보겠다) 이번 글의 목표는 AWS ec2 instance에 kafka server 띄우기 cli를 통해 producer, consumer 개념 이해하기 이다. 파이썬 클라이언트를 선택한 이유는 이후에 fla..

backend 2020.12.04

쿠버네티스에서 디버그를 더 쉽게: kubectl alpha debug

kubectl alpha debug command Kubecon Europe 2020 세션에서 k8s new feature 설명을 듣다가 괜찮은 alpha 기능이 있어서 정리해본다. kubernetes를 쓰면서 어렵다고 느낀 점 중 하나는 디버깅이다. logs나 describe pod로 해당 pod의 상태/로그를 확인할 수 있고 exec로 pod에 실제 명령어를 실행시켜볼 수 있지만 어디까지나 해당 pod이 running중일 때의 얘기이고, pod 자체가 잘 뜨지 않거나 exec 명령어를 사용하기 힘든 상황일 경우에는 디버깅이 정말 어렵다. shell이나 디버깅 툴이 없는 컨테이너일 경우에도 마찬가지이다. kubectl alpha debug 기능은 이럴 경우 pod 안에 디버깅에 필요한 툴들을 포함시킨 ..

backend/kubernetes 2020.08.25

[kubernetes in action] 7. Configmaps and Secrets - 2

7.3. Setting environment variables for a container Kubernetes에서는 각각의 컨테이너에 환경변수를 지정해 줄 수 있다. 다만 아직 pod레벨에서 지정하는 방법은 없다. 환경변수로 위에서 만든 fortune image의 interval을 설정해보자. fortune-env/fortuneloop.sh #!/bin/bash trap "exit" SIGINT echo Configured to generate new fortune every $INTERVAL seconds mkdir -p /var/htdocs while : do echo $(date) Writing fortune to /var/htdocs/index.html /usr/games/fortune > /va..

DNS 서버 사용 이후 minikube에서 docker pull 안되는 문제 (`Error response from daemon: Get https://registry-1.docker.io/v2/: dial...: read: connection refused`)

DNS 서버 사용 이후 minikube에서 docker pull 안되는 문제 Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.64.1:53: read udp 192.168.64.4:48733->192.168.64.1:53: read: connection refusedminikube를 잘 사용하고 있다가 cloudflared DNS over https를 사용한 이후로 minikube 안에서 docker pull이 안되는 문제가 발생했다. $ minikube ssh _ _ ( ) ( ) ___ ___ (_) ___ (_)| |/') _ _ | |..

backend/kubernetes 2020.06.17

[kubernetes in action] 7. Configmaps and Secrets - 1

7. ConfigMaps and Secrets configuring applications Changing the main process of a container Passing command-line options to the app Setting environment variables exposed to the app Configuring apps through ConfigMaps Passing sensitive information through Secrets 거의 모든 app이 configuration을 필요로 하고 이를 app 자체에 담을 수 없으므로 kubernetes에서 어떻게 configuration option을 넘겨줄 수 있음 7.1. Configuring containerized ap..

데이터팀 이적기: 백엔드 웹 개발자에서 데이터 엔지니어로

데이터팀 이적기: 백엔드 웹개발자에서 데이터 엔지니어로 해당 경험과 느낌은 전적으로 나 혼자만의 느낌이며, 회사나 팀을 대표하지 않고, 회사의 목표나 방향, 다른 팀원들의 생각과는 다르다는 것을 명확히 하면서 글을 시작한다. 본 글은 2019년에 사내에서 작게 발표했던 내용을 블로그에 정리한 글이다. 주로 회사의 내용이기 때문에 외부에 공개하지 않으려고 했지만 쥬니어 백엔드 개발자나 데이터 엔지니어에 대해서 궁금해 하는 사람들이 조금이라도 정보를 얻었으면 해서 회사명 등을 지우고 블로그에 올린다. 이미 outdated 된 내용이 많고 데이터 엔지니어 초창기에 쓴 내용이라 조금 부끄러운 점이 많지만 그 때의 생각을 공유하기 위해 큰 수정 없이 올린다. 백엔드 개발자 내가 웹 개발을 시작한 것은 스타트업에 ..

카테고리 없음 2020.06.15

Emacs의 Orrg-mode를 vim에서도? Vim-orgmode

Vim org-mode vim org mode kor 나는 Emacs를 써 본 적이 없다. (사실 쓰는 사람도 딱 한 명을 제외하고는 본 적이 없다. 해외로 나간 그 분은 잘 지내시는지..) 하지만 Emacs의 많은 모드에 대해서는 들어본 적이 있다. 그 중에서도 org 모드는 todo list 등 모든 기록을 Emacs로 해 줄 수 있게 하는 모드이다. vim-orgmode는 이런 orgmode를 vim에서 사용할 수 있게 해 주는 모드이다. Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system. I us..

카테고리 없음 2020.06.14

ReplicationController, ReplicaSet, Deployment 중 어떤것을 사용해야할까?

ReplicationController, ReplicaSet, Deployment 책을 읽으면서 ReplicationController, Replicaset, Deployment 등 비슷한 개념에 헷갈렸는데 문서에서 잘 정리되어 있어서 적어둔다. Basic pod 일반 pod. 따로 띄울 수는 있지만 권장하지 않는다. 어떤 이유로 application이 단일 파드가 필요하더라도 replicaset을 이용하는 것을 권장 ReplicationController, ReplicaSet 레플리카셋은 레플리케이션 컨트롤러를 계승하였다. 이 두 개의 용도는 동일하고, 유사하게 동작하며, 레플리케이션 컨트롤러가 레이블 사용자 가이드에 설명된 설정-기반의 셀렉터의 요건을 지원하지 않는다는 점을 제외하면 유사하다. 따라서..

backend/kubernetes 2020.06.13

[kubernetes docs] Replicaset, ReplicationController, Deployment

Container Replicasets 레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용 레플리카셋의 작동 방식 레플리카셋을 정의하는 필드 selector: 획득 가능한 pod를 식별 replica의 개수: 유지해야 하는 pod 개수 pod template: 신규 pod에 대한 데이터 명시 레플리카셋을 사용하는 시기 레플리카셋은 지정된 수의 파드 레플리카가 항상 실행되도록 보장한다. 그러나 디플로이먼트는 레플리카셋을 관리하고 다른 유용한 기능과 함께 파드에 대한 선언적 업데이트를 제공하는 상위 개념이다. 따라서 우리는 사용자 지정 오케스트레이션이 필요하거나 업데이트가 전혀 필요하지 않은 경우라..

[kubernetes in action] 6. Volumes: attaching disk storage to containers

Chapter 6. Volumes: attaching disk storage to containers Creating multi-container pods Creating a volume to share disk storage between containers Using a Git repository inside a pod Attaching persistent storage such as a GCE Persistent Disk to pods Using pre-provisioned persistent storage Dynamic provisioning of persistent storage 6.1. INTRODUCING VOLUMES 6.2. Usnig volumes to share data between..