수업의 끝.
6월을 마지막으로 수업은 모두 끝이 났다. 남은 건 최종 프로젝트 뿐 ...
1개월 간 학습한 내용 & 프로젝트
이번 달 학습한 내용은 전반적으로 배포에 관한 내용이었다. 저번 달에 학습한 도커를 기반으로 K8s(Kubernetes), Jenkins, Helm 등 모두 배포에 관련된 내용이었다.
특히 이번 프로젝트는 배포까지 해보면서 사용했던 것을 기반으로 학습한 내용을 작성해보겠다.
일단 프로젝트를 도커 이미지로 올려야하기 때문에 도커는 가장 기본적이다.
프로젝트를 완성한 후, 프로젝트 내에서 build 혹은 bootJar를 진행하고,
docker build -t <docker name>/<repo name>:<repo tag>
-> 도커 이미지로 만들어 준 후
docker push <docker name>/<repo name>:<repo tag>
-> 도커 허브에 올린다
이 과정은 깃 허브에 프로젝트를 올리는 것과 비슷하다.
docker hub에 올리기 위해서는 Dockerfile도 필요하다. 이것은 하게 된다면... 구글링을 해보는 걸로...
이후 프로젝트 배포를 GCP(Google Cloud Platform)으로 VM을 만들어서 배포하기 위해서 VM에 도커와 쿠버네티스를 다운받아준다.(이건 Docs 보면 나와있음~!)
하나의 VM에서 돌리기엔 무리가 갈 수 있고 성능적으로 느려질 수 있기 때문에 master 이외에 worker node를 추가로 만들어서 마스터 노드와 연결시켜준다.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
-> 이걸 마스터 노드에 입력하면 여러 줄의 말이 뜨는데... 그 중에서
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
이 부분을 복사해서 입력해준다.
그리고 이제 하단에
kubeadm init ~~~ 이라고 뜨는데 그 부분을 복사해서 worker 노드에 입력해준다.
이후 kubectl get nodes 라고 명령어를 입력해주면
master 노드와 worker 노드가 연결된 것을 알 수 있다.
이후 Calico라는 VM 환경에서 Virtual Network를 구축하게 도와주는 Tool을 다운받아준다.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/custom-resources.yaml
watch kubectl get pods -n calico-system
이렇게 쿠버와 칼리코까지도 다운 받아준다면 이제 마지막으로 Helm만 다운 받아주면 된다.
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
여기까지 입력해주면 기본적인 준비는 모두 끝이다...
이제 프로젝트 관련 Helm 파일을 생성해줘야하는데 내가 만든 프로젝트를 실행 시키기 위해서 서버 코드와 데이터베이스가 필요하다면 두 개를 묶어서 같이 실행시켜주는 거라고 생각하면 된다.
나는 server와 MySQL, Redis까지도 필요했기 때문에 로컬에서 파일을 만들어서 git에 올려놨다.
VM에서 git clone으로 helm 파일을 받아온 다음
helm install <server name> .
으로 내가 만든 파일을 실행시켜주면 실행이 된다.
확인은 kubectl get po를 한다면 pod가 실행되고 있는 것을 볼 수 있고,
deployment도 확인할 수 있다.
코드의 수정이 있다면 도커 이미지가 바뀌기 때문에
kubectl rollout restart deploy <deploy name>
을 해주면 무중단 배포가 진행되고 수정된 코드로 배포가 진행된다.
만약 helm 파일의 수정이 있다면
helm upgrade <server name> .
하고 나서 무중단 배포를 진행시켜주면 배포 끝!
이제 젠킨스로 CI/CD만 진행해주면 되는데
사실 적기 힘들거 같고,,, 내 머릿 속에 있으니까 잘 기억해 두는 걸로..
프로젝트 얘기로 넘어가면 이때까지의 프로젝트들 보다 가장 완성도 있게 끝냈던 것 같고 강사님의 평도 좋았다.
동시성 처리라는 큰 문제도 처리했고, MSA도 제대로 사용해본 것 같았고, Kafka, Feign, JWT Token, Security 등 배웠던 내용을 모두 사용해봤고, 성능적으로도 고민해보는 시간이 많았다.
주제는 동행복권 사이트를 만드는 것이 목표였고, 나는 연금복권 파트를 담당했다. 나와 한명이 더 있었는데, 나는 구매와 당첨 매칭 로직을 담담했다.




이번 프로젝트는 이렇게 DFD도 그려보고 각 서버 별로 아키텍처 다이어그램도 그려봤다.
GitHub에 트러블 슈팅도 메모 해놨다.
기간이 길었던 만큼 더 많은 노력과 정이 들어간 것 같고, 잘 마무리 된 것 같아서 뿌듯했다. 이 기세 몰아서 최종까지도 열심히 진행하고 싶다~~!~@
전반적인 느낀 점
저번 주 회고에 적었던 것 처럼 성장이 느껴졌다. 하지만 성장을 하는 만큼 최종적으로 바라보는 곳이 점점 높아지기에 아직 멀었다고 생각된다. 좀 더 학구열을 가지고 학습하면서 찾아보고 물어봐가면서 최종에 임해야할 것 같다. 현재 최종 프로젝트 초반부 회의를 하는데 다른 팀원들보다 조금 부족하다고 느껴진다. 최종 기간이 길다고 늘어지지 말고 열심히 해서 기간 내 완벽하게 구현도 하고, 테스트, 배포, 문서 작업까지 마무리 해서 멋있는 포트폴리오로 남기고 싶다.
벌써 두달이란 기간밖에 남지 않았는데 이 두 달동안 4개월간의 성장보다 더 많은 성장을 위해서 노력하고 싶다.
Keep
캠퍼스에 남아있는 것이 즐겁다! 물론 같이 하는 사람들이 있을 경우에 말이다. 그리고 물론 낮시간보다 집중력은 떨어지는데 종종 피버타임이 올 때가 있는데 그게 캠퍼스에 남아 있을 때 자주 온다 !! 코드를 우다다다다 잘 쳐지게 되면 기분도 좋아서 집가는 발걸음도 가볍다 ㅎㅎ. 최종 기간동안에도 열심히 남아서 코딩도 하고 블로그도 작성하고 어김없이 문 닫고 집가야겠다
Problem
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이 부분에 대해서는 면목 없다 .... 저번, 저저번 달부터 자소서 이력서, 진로에 대해 고민해보겠다고 해놓고서는 매일 남아서 코딩하고 하다보니 생각을 못했다. 물론 핑계에 불과하지만... 하지만 이제는 진짜 해야할 때다 7월 말 전에 이력서, 자소서 등 작성 꼭꼭!!! 해보겠습니다 ... 진로에 대해서는 고민을 좀 해보긴 했다만 찾지 못했다... 그냥 코드 치는 곳이면 어디든 좋을 것 같은 기분... SI개발 쪽도 괜찮을 것 같은데 사실 좀 두렵기도 하다. 스타트업도 생각을 해봤는데 가장 잘 맞을 것 같기도 했다. 주변에서는 요즘 스타트업은 연봉이 좀 적다고 하는데, 내 실력 향상, 커리어에는 가장 도움이 될 것 같지만 내가 스타트업을 갈 실력까지 될까란 걱정도 있다. 그래도 진로에 대해 고민해본다면 어디든 좋지만 스타트업도 긍정적으로 생각 중이다.
Try
이제 최종 프로젝트인데 React Native를 사용해서 앱 쪽도 건드려 볼 것 같다. 사실 서버 부분은 똑같아서 큰 걱정은 없지만 앱을 건드려보는건 이번이 처음이라 걱정이 아예 없는건 아니다. 그래도 지금까지 그래왔던 것처럼 잘 마무리할 예정이다 !
성장해보자 김재민 !!
'playdata 회고 > 월간 회고' 카테고리의 다른 글
| 플레이데이터 백엔드 개발 5기 6개월 차 회고 (1) | 2024.08.25 |
|---|---|
| 플레이데이터 백엔드 개발 5기 5개월 차 회고 (1) | 2024.08.05 |
| 플레이데이터 백엔드 개발 5기 3개월 차 회고 (2) | 2024.06.01 |
| 플레이데이터 백엔드 개발 5기 2개월 차 회고 (1) | 2024.05.01 |
| 플레이데이터 백엔드 개발 5기 1개월 차 회고 (2) | 2024.03.31 |