블로그
전체 13
2025. 06. 15.
1
워밍업 클럽 4기 DevOps - 발자국 3주차
학습한 내용이번주는 배포 관련된 내용에 대해 학습했다. 깃헙 액션은 주로 많이 사용하기도 해서 크게 어려움은 없었지만,외에는 사용해본 CI&CD 기술이 없어 이부분이 부족하다 생각하고 있을때 젠킨스를 강의에서 배우게 되어 이부분이 매우만족스러웠다. 처음 배우는 기술이다 보니 낯선탓에 어렵다고 느껴지는 부분도 있었는데 반복적으로 강의를 듣다보니어느정도 이해할 수 있었다. 미션이번주 미션은 아직 진행중이다. 화요일까지 제출해야 하는데 제출에는 무리가 없을것 같은데 스스로 이해하지 못한 부분이 있다보니 급하게 제출하기 보다 이해를 먼저 하고자 했다. 이틀 정도 시간이 남아있으니 이해가 되지 않는 부분을 좀 더 학습하고미션을 완수하여 제출해야겠다. 회고매주 쉽지 않았지만, 스터디 기간이 얼마 안남은 탓일까.. 아니면 이번주 학습 내용이 많이 어려웠다 조금은 쉽지 않은 한주였다.얼마 남지 않았으니 끝까지 잘 마무리할 수 있었으면 좋겠다.
데브옵스 · 인프라
・
워밍업클럽

2025. 06. 08.
1
워밍업 클럽 4기 DevOps - 발자국 2주차
학습한 내용이번주는 쿠버네티스의 Probe, Configmap, Secret, PV 등 에 대해 각각의 개념과 실습을 진행했다. 개념적이 요소가 많이 들어있어 낯선 탓인지 어렵게 느껴졌다. 현업에서 쿠버네티스를 사용하고는 있지만 개념이 있는건 아니였어서 단어는 익숙했지만 각각 어떤 기능을 하고 어떤 용도로 사용되는지 까지는 깊게 알고 있지 않았는데 이번 기회에 알게된것 같아 좋았다.아직 완벽하게 이해한건 아니라서 좀 더 반복적인 학습이 필요할것 같다. 미션이번주는 미션이 3개로 구성되어 있었다. 하나하나 진행한는데 있어 예상 시간보다 좀 더 많은 시간이 소요되었다.미션을 보고 먼저 어떻게 해야할지 생각해보고 직접 해보고 뭔가 이상하면 카페에 들어가서 다시 한번 확인해보는 방식으로진행했는데 미션 하나하나가 매우 어려웠다. 그래도 어떻게든 미션을 수행하고 제출을 하니 뿌듯하긴 했다. 회고이번주도 정말 정신없이 지나갔다. 하루에 2시간 이상은 워밍업 클럽에 투자를 해야하는데 요즘 회사가 너무 바빠 매일 야근을 하다보니 2시간 이상을 투자하는게 쉽지 않았다. 복습을 해야하는데 복습할 시간이 너무 부족하다. 평일에 최대한 복습을 할 수 있는대로 해보고 나머지는 주말에 하고 있는데 주말에 진행하는 다른 스터디도 있다보니 이 부분도 쉽지 않았다.2주차가 끝났는데 복습을 많이 하지 못해 아쉬움이 많다. 하루가 너무 짧다..
데브옵스 · 인프라
・
워밍업클럽

2025. 06. 07.
1
워밍업 클럽 4기 DevOps - 미션 4
PV, PVC파일 생성2. 폴더 확인2-1. 임시 폴더 확인2-2. master node 폴더 확인3. pod 삭제4. 파일 조회파일 조회 결과 pod 내부에는 pod 삭제와 함께 제거되어 파일이 없는 모습, pv 는 pod 삭제에 영향 없이 그대로 파일이 있는 모습이다.5. hostPath 동작 확인 - Deployment 수정 후 [1~4] 실행5-1. deployment 수정5-2. 1~2 반복5-3. pod 삭제 5-4. 파일 조회Deployment1. RollingUpdate 하기1-1. minReplica 변경1-2. version 호출 및 업데이트 진행 버전 v1.0.0 과 v2.0.0 이 함께 호출되는 모습2. RollingUpdate (maxUnavailable: 0%, maxSurge: 100%) 하기2-1. 버전 변경(v2.0.0 -> v1.0.0)파드가 하나씩 변경되는게 아니라 변경에 필요한 모든 파드가 생성되어 변경되는 모습3. Recreate 하기3-1. 버전 변경(v1.0.0 -> v2.0.0)순차적으로 변경 되는게 아니라 그냥 변경 되는 모습4. 롤백 하기롤백도 한번에 진행Service1. Pod 내부에서 Service 명으로 API 호출 [서비스 디스커버리]2. Deployment에서 Pod의 ports 전체 삭제, Service targetPort를 http -> 8080으로 수정2-1. Deployment 수정2-2. Service 수정3. 다시 Pod 내부에서 호출HPA1. 부하 확인1-1. pod 추가 생성2. [behavior] 미사용으로 적용2-1. HPA 수정2-2. 부하 확인(Grafana)2-3. 부하 확인(CLI)마무리여러가지 오브젝트에 대한 개념이 한번에 들어와서 처음에는 조금 어렵다고 느꼈는데, 반복적으로 강의를 듣고 실습을 해보니 어느정도 각각의 오브젝트에 대한 개념이 조금씩 잡히고 있는것 같다는 느낌이 들었습니다.
데브옵스 · 인프라
・
워밍업클럽

2025. 06. 07.
1
워밍업 클럽 4기 DevOps - 미션 3
응용 과제 1번Configmap의 환경변수들을 Secret을 사용해서 작성하고, App에서는 같은 결과가 나오도록 확인해 보세요.secret 생성secret 변경 적용/info url 요청 화면/properties url 요청 화면응용 과제 2번반대로 Secret의 DB정보를 Configmap으로 만들어보고 App을 동작시켜 보세요configmap 변경 전configmap 변경 후변경 내용 확인느낀점configMap: 애플리케이션 구동에 필요한 환경 변수secret: 환경 변수 중 민감정보가 포함되어 있는 것들기존에는 별 생각 없이 위에 적어 놓은 기준에 따라 구분해서 사용하고 있었는데, 이번 기회에 configMap 이 무엇이고 secret 이 무엇인지, 조금은 알 수 있게 되어 좋았다.
데브옵스 · 인프라
・
워밍업클럽

2025. 06. 05.
1
워밍업 클럽 4기 DevOps - 미션 2
응용 과제 1번startupProbe 가 실패 되도록 설정해서 Pod 가 무한 재기동 상태가 되도록 설정해 보세요.startupProbe 의 경우 pod 가 실행된 이후 k8s 에서 지속적으로 요청을 보내게 되는데 이때 pod 의 애플리케이션이 구동되지 않았더라도 요청을 보내게된다. 애플리케이션이 구동되지 않았을때 요청을 보내면 당연하게도 실패 응답이 오기 때문에 startupProbe 의 failureThreshold 를 너무 낮게 설정하면 pod 가 무한 재기동 상태에 빠질 수 있다.(failureThreshold 를 1로 설정 시 위와 같은 event 발생)startupProbe 요청 -> 실패 응답 -> failureThreshold 수 확인 -> pod 재기동 -> startupProbe 요청 -> ... 반복 응용과제 2번일시적 장애 상황(App 내부 부하 증가)가 시작 된 후, 30초 뒤에 트래픽이 중단되고, 3분 뒤에는 App 이 재기동 되도록 설정해 보세요.livenessProbe 의 설정 수정failureThreshold: 3 -> 18periodSeconds: 10 -> 10설정 중 failureThreshold 의 값을 3 에서 18로 변경하여 30초 후 애플리케이션이 재 기동 되는것이 아니라 180초 뒤 애플리케이션이 재 기동 되도록 변경 load 시작애플리케이션 재 기동응용과제 3번Secret 파일(/usr/src/myapp/datasource/postgresql-info.yaml)이 존재하는지 체크하는 readinessProbe를 만들어 보세요.readinessProbe 의 설정을 기존에 httpGet 에서 exec 를 통핸 command 를 보내도록 수정command: ["cat", "/usr/src/myapp/datasource/nofile.yaml"]위와 같은 이벤드가 발생하면서, pod 가 정상 구동되지 않는 모습을 볼 수 있다.postgresql-info.yaml 해당 파일은 존재하고 있어서 해당 파일을 체크하는 명령어를 넣었을때는 잘 동작된다.
데브옵스 · 인프라
・
워밍업클럽

2025. 06. 01.
1
워밍업 클럽 4기 DevOps - 발자국 1주차
1. 학습한 내용워밍업 클럽 4기 데브옵스에 신청해서 일주일간 기본적인 linux 와 kubernetes 에 대해 학습을 진행했다.linux 의 역사에 대한 내용을 강의에서 들을때는 정말 흥미로웠다. 내가 아는 linux 는 ubuntu 와 centos 정도 인데linux 의 역사를 들으면서 linux 가 매우 다양한 종류로 파생되고 있었고, 종류마다 조금씩 다르고 타켓하는 사용자가 다른 부분에 대해 굉장히 신기해하면서 들었다.linux 를 단순하게 사용은 많이 해봤지만, 어떤 종류가 있고 어떤 부분이 다른지 알아볼 생각조차 못하고 있었는데 이번 기회에 이런 내용을 듣게 되어 좋았다. kubernetes 에 대해서는 어느정도 사용해봤고 편리한건 알고 있었지만, 다양한 컨테이너 오케스트레이션 툴 중에 왜 kubetnetes 를 가장 많이 사용하고 있는지는 알고 있지 않았는데 이부분에 대해서도 조금은 알게 되어 좋았다.앞으로는 단순하게 기술만을 사용하는게 아니라 그 기술이 나타나게된 배경이랑 철학 같은걸 조금이라도 알고 사용해야겠다는 생각이 들었다.kubernetes 를 사용하고 있었기에 편리하다는건 알고 있었지만, 어떤 부분에서 어떤 기능 때문에 편리한지는 설명하지 못했는데 이번 강의를 통해 부족한 부분을 채울수 있을것 같다는 느낌이 들어 좋았다.2. 미션직접 vm 을 통해 linux 띄우고 kubernetes 를 설치하는 과정에 대한 미션이 있었는데, 생각보다 쉽지 않았다.늘 설치되어 있거나, 제공되는 kubernetes 만을 사용하고 있었는데 직접 설치해본 경험이 없다보니 더 쉽지 않았던것 같다.apple silicon 이라는 특수한 환경 때문도 있었지만, 설치를 직접 해본 경험이 없는 낯설음이 이 미션을 더 어렵게 생각해게 된것 같다. 다시한번 내 맥북에 linux 를 띄우고 kubernetes 설치할 일이 있을지는 모르겠지만, 그래도 이번 경험을 통해 linux 환경에서 kubernetes 를 설치할때 어떤 점들을 고려해야하는지 알게 되어 추후에 직접 설치해야하는 일이 생겼을때 무리 없이 진행 할 수 있을것 같다는 자신감이 생겼다.3. 회고먼저 이번주는 정말 정신없이 지나갔다. 회사 일이 요즘 너무 바빠 퇴근하고 집에 와서 공부할 시간이 생각보다 많지 않았다.강의 듣기, 복습, 미션, 발자국 작성 등 뭐하나 제대로 진행하지 못한것 같아 아쉬움이 많다.다음주부터는 강의 듣는것과 복습에 대한 시간 분배를 조금 더 적절하게 해야함을 느꼈다. 복습의 중요성을 알고 있고 일프로님도 복습에 대한 부분을 매우 종요하게 생각하시는것 같은데 시간이 너무 부족해서 복습을 많이 못했다.출 퇴근 시간을 활용해서 최대한 복습을 하고, 집에 와서 복습한 내용을 정리하는 방식으로 진행해봐야겠다.지금 발자국을 작성하고 있는 이 시간에도 할게 너무 많아 정신이 없다.. 다음주부터는 짬나는 시간을 최대한 활용해봐야겠다.
데브옵스 · 인프라
・
워밍업클럽
・
쿠버네티스
・
일프로

2025. 05. 29.
1
워밍업 클럽 4기 DevOps - 미션 1
워밍업 클럽 4기 DevOps 미션 1 (쿠버네티스 설치 구간별 상태 확인) 쿠버네티스 설치 환경💻 pc: mac book m3 pro(AArch64, 12 core, 18gb, 500gb)🐧 linux: rocky9🔨 tools: lima-vm 왜 lima-vm 을 사용했나?Apple Silicon 맥 에서 Virtual Box 를 사용하는데 제약이 있고, 그외 다른 선택지가 있긴한데(UTM 등) VM이 필요한 작업에서 많이 활용하기도 했었고 docker 또한 lima-vm 을 활용해서 사용하고 있기 때문에 사용하게 되었습니다. Apple Silicon 맥에서 VM 을 빠르게 기동해서 활용하는데 있어 좋은 툴이라 생각합니다.설치 구간별 상태 확인(맥북을 사용해서 4부터 시작)4. Rocky Linux 기본 설정타임존 설정 확인 (명령어: timedatectl)5. kudeadm 설치 전 사전 작업1. 방화벽 해제 확인 (명령어: systemctl status firewalld) lima-vm 을 활용해서 linux 설치 시 별도의 설정을 해주지 않으면 방화벽을 포함하지 않고 설치가 된다.스왑 비활성화 확인6. 컨테이너 런타임 설치iptables 세팅 명령어cat docker engin (containerd.io) 만 설치명령어yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 결과containerd 설치 확인 (명령어: systemctl status containerd )설치 가능한 버전의 containerd.io 리스트 확인cri 활성화 설정 확인 (명령어: cat /etc/containerd/config.toml | grep SystemdCgroup)kubelet cgroup 확인 (configmap)(명령어: kubectl get -n kube-system cm kubelet-config -o yaml | grep cgroupDriver)kubelet cgroup 확인 (kubelet)(명령어: cat /var/lib/kubelet/config.yaml | grep cgroupDriver)7. kubeadm 설치repo 설정 확인(명령어: yum repolist enabled)8. kubeadm 으로 클러스터 생성클러스터 초기화(명령어: kubectl get node && kubectl cluster-info && kubectl get pods -n kube-system)kubectl 사용 설정(명령어: cat ~/.kube/config)CNI Plugin 설치 (calico 대신 flannel 설치)(명령어: kubectl get configmap kube-flannel-cfg -n kube-flannel -o yaml | grep Network)9. 쿠버네티스 편의 기능 설치kubectl 기능 설정 확인마무리 및 소감실무에서는 주로 GKE나 EKS 같은 클라우드 기반 Kubernetes 서비스를 사용했기 때문에, 직접 리눅스 환경에 Kubernetes를 설치해본 경험은 이번이 처음이었습니다. Apple Silicon 맥북 위에 VM을 띄우고 설치를 진행했는데, 강사님의 가이드를 따르기보다는 개인적인 고집으로 다른 툴을 사용하거나 아키텍처를 변경하면서 설치 과정이 생각보다 순탄하지는 않았습니다. 결국 반나절 정도 삽질을 했던 것 같네요.설치 과정에서 사용한 명령어나 겪었던 문제들, 해결 방법 등을 모두 이 글에 담기에는 내용이 너무 길어질 것 같고, 인프런 블로그 에디터가 개인적으로 불편하게 느껴졌던 점들(코드 블록, 번호 목록 등)도 있어서, 해당 내용은 복습하면서 개인 블로그에 따로 정리해볼 예정입니다.
데브옵스 · 인프라
・
워밍업클럽4기
・
DevOps

2024. 10. 03.
0
워밍업 클럽 2기(클린코드 & 테스트) 2번째 미션(DAY 4)
SOLDS - Single Responsibility Principle (SRP): 클래스는 하나의 책임만 가져야 하며, 변경이 필요할 때 그 책임 하나만 변경되어야 한다는 원칙이며, 해당 원칙을 고수 했을 때 클래스가 더 간단하고 유지보수가 용이해진다.O - Open/Closed Principle (OCP): 확장에 대해서는 열려 있어야 하지만, 수정에 대해서는 닫혀 있어야 한다는 원칙으로 기존 코드를 수정하지 않고도 새로운 기능을 추가할 수 있어야 한다.L - Liskov Substitution Principle (LSP): 자식 클래스는 부모 클래스의 기능을 대체할 수 있어야 한다는 원칙으로 자식 클래스가 부모 클래스를 대체해도 프로그램의 동작에는 문제가 없어야 한다.I - Interface Segregation Principle (ISP): 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다는 원칙으로 하나의 인터페이스 보단 여러개의 구체적인 인터페이스로 나눠 사용하는게 더 바람직 하다.D - Dependency Inversion Principle (DIP): 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 한다는 원칙으로 추상은 구현체에 의존해서는 안 되고, 구현체가 추상에 의존해야 한다.리펙터링public boolean validateOrder(Order order) { if (order.getItems().size() == 0) { log.info("주문 항목이 없습니다."); return false; } else { if (order.getTotalPrice() > 0) { if (!order.hasCustomerInfo()) { log.info("사용자 정보가 없습니다."); return false; } else { return true; } } else if (!(order.getTotalPrice() > 0)) { log.info("올바르지 않은 총 가격입니다."); return false; } } return true; }해당 코드를 리펙터링 해보자.public class OrderValidator { private static final Logger log = LoggerFactory.getLogger(OrderValidator.class); public boolean validate(Order order) { return hasItems(order) && hasValidTotalPrice(order) && hasCustomerInfo(order); } private boolean hasItems(Order order) { if (order.getItems().isEmpty()) { log.info("주문 항목이 없습니다."); return false; } return true; } private boolean hasValidTotalPrice(Order order) { if (order.getTotalPrice()
![[인프런 워밍업 스터디 클럽 1기_FE] 1주차 회고록 정리](https://cdn.inflearn.com/public/files/blogs/d1150ecb-e226-4a05-83d4-5592b8afb40e/fd.png?w=260)
2024. 05. 05.
0
[인프런 워밍업 스터디 클럽 1기_FE] 1주차 회고록 정리
0기에 백엔드 스터디에 이어 1기 프론트엔드 스터디를 신청하고, 참여하였다.신청 이유신청하게된 가장 큰 이유는 자바스크립트 랑 JQuery 를 조금씩 사용했었는데, 사실 자바스크립트 를 제대로 공부했던 적이 없고, 이직하는 곳에서는 백엔드와 프론트엔드가 명확하게 나뉘게 되어 이직하기전 프론트엔드 지식을 조금이라도 학습하면 협업을 할때 도움이 많이 될것 같아 신청하게 되었다.자바스크립트 미션아직 1단계 완료 후 2단계를 진행하고 있다. 생각외로 많이 어려워서 진행 속도가 많이 느리다. 리액트 부분으로 넘어가면 훨씬 어려워진다고 했는데 0기때 왜 프로트엔드에서 우수 러너가 적게 나왔는지 새삼 느끼고 있다. 1주차 느낀점하필 이직 시기와 겹치는 바람에(심지어 지역이동..) 거주지를 알아보고, 이직회사에서 사용하는 기술을 다시 한번 살펴보는 등 스터디외에도 할게 너무 많아 정신없이 보내고있다. 우선순위를 잘 정해서 2주차를 진행해야할것 같다.정리현재 서포터로도 참여하고 있을 정도로 애정이 정말 많이 가는 스터디다. 이런저런일로 많이 바쁘고 정신이 없지만 조금이라도 함께하는 러너분들에게 도움이 되기 위해 노력해야겠다.
프론트엔드
・
워밍업클럽
・
스터디
・
프론트엔드
・
1기
・
회고
・
발자국
![[인프런 워밍업 스터디 클럽 0기_BE] 후기](https://cdn.inflearn.com/public/files/blogs/f5c4a392-894e-4990-836e-7fa4c68e9824/warmingup.png?w=260)
2024. 03. 19.
2
[인프런 워밍업 스터디 클럽 0기_BE] 후기
3주간의 스터디가 끝이났다. 정말 많은 걸 배울 수 있었고, 새로운걸 경험해 볼 수 있었다. 1. 코치님0기 백엔트 코치님은 최태현 코치님이다. 이전 찍으셨던 몇개의 강의(사실 전부..ㅎㅎ) 를 통해 내적 친밀감이 쌓여있었는데스터디 코치님 이라는 이야기를 듣고 꼭 스터디에 참여하고 싶다는 생각이 들었다. 강의를 통해서도 정말 많은걸 알려주시려 하고, 질문도 매우 친절하게 답변해주셨었는데 스터디를 진행하면서도 코치님은 질문 뿐만 아니라특강을 통해서 정말 많은걸 알려주시려고 하는 모습이 정말 대단하다고 느껴졌다.👍 현업에서 일을 하시면서 늦은 시간까지 이어지는 질문에도 친절하게 답변해주시는 모습을 보면서 나도 저런 좋은 영향력을 주위에 끼칠수 있는 개발자가 되고 싶다는 생각이 들었다. 2. 코드리뷰스터디를 처음 시작할때 커리큘럼을 보고 미니 프로젝트를 진행할때 다른 분들과 함께 코드리뷰를 하며 진행하면 어떨까?라는 생각이 들었었다. 할까말까 고민을 정말 많이 했었는데 개인적으로도 코드 리뷰를 해보고 싶었고, 좀 더 이 스터디기간동안 많은걸 배우고 싶어 용기를 내어 함께 진행해 볼 인원을 구했었다. 정말 다행히도 5분의 스터디원 분들이 함께해보자고 하셨고, 결과적으로 너무 만족스러운 시간을 보낼 수 있었다. 내 코드를 다른 사람에게 보여준다는건 지금도 쑥쓰럽긴 하지만 그렇기 때문에 코드 한줄을 작성할때도 정말 많은 생각을 하면서 작성할 수 있었다. 그리고 그 고민했던 내용을 함께 나누면서 정말 많은걸 배울 수 있었다. 다시 한번 함께 미니프로젝트를 진행했던 백엔드 스터디원분들 에게 감사하다는 말을 전해고 싶다.🙇♂ 3. 인프런보통의 회사에서 하기 어려운 이런 좋은 영향력을 전파하고 만드는걸 할 수 있다는게 늘 놀랍다. 해커톤이나 개발자 컨퍼런스 후원 기업에 매우 자주 인프런이 있는걸 볼 수 있고, 직접 인프콘 이라는(한번도 가보지 못했다. 나는왜 운이 없는것인가..💧) 큰 컨퍼런스를 열기도 하고. 전반적으로 개발자 생태계에 정말 좋은영향력을 널리 퍼트리고 있는 모습을 보면 정말 대단한 기업이라는 생각이 든다. 생각은 누구나 할 수 있지만 이걸 실천할수 있다는게 참 놀랍다. 이번 스터디도 그렇고 앞으로 더 많은 좋은 영향력을 널리 퍼트리려고 다양한 시도를하고 있는 모습을 보고 있으면 언제가는 인프런에서 일을 꼭 해보고 싶다 라는 생각이 듣다.(자바 개발자 안필요 하신가요💧) 4. 0기앞으로 이 워밍업 클럽이 0기에서 멈추는것이 아니라 1기 2기 쭉쭉 더 많은 사람들에게 좋은 경험이 될 수 있도록커져갔으면 좋겠다. 다음에 더 좋은 스터디가 열린다면 주변에 적극 추천해주고, 나도 다시 한번 참여해봐야겠다. 5. 마무리좋은 기회를 만들어주신 인프런 관계자 분들에게 정말 감사드린다. 특히 스터디 운영에 대해 이런저런 공지와 궁금증을해결해주신 셰리 에게 감사의 인사를 전하고 싶다. 더 많은걸 알려주시려 했던 최태현코치님 그리고 함께 했던 모든 백엔드 스터디 원 분들에게도 다시 한번 감사하다는 인사를 전하고 싶다. 주저리주저리 말이 많아졌는데, 혹시라도 미래에 있을 1기 신청을 고민하며 이 글을 보고 있다면 당장 신청 하라고 적극 권해 주고 싶다.
웹 개발
・
인프런
・
인프런워밍업클럽
・
스터디0기
・
백엔드




