BEYOND SW 캠프 15기 18주차 회고

mijuckboon·2025년 5월 25일
post-thumbnail

부트캠프 18주차 회고를 적어본다. 전체 교육과정의 23\dfrac{2}{3}가 지나갔다.
출석

학습 내용

1. Kubernetes

  • 자동화된 컨테이너 배포, 스케일링, 관리를 제공하는 오픈소스 플랫폼
  • 컨테이너 오케스트레이션 도구의 일종

2. Jenkins

  • CI/CD 프로세스를 자동화하는 데 널리 쓰이는 오픈 소스 자동화 서비스

배운 점

1. Kubernetes

DB 프로젝트 당시 DB 레플리카 서버를 구축하는 과정이 꽤 복잡했던 것으로 기억하는데, Kubernetes를 배워보니 yaml 파일에 replicas 설정을 하는 것으로 애플리케이션 레플리카 서버가 돌아가며 그 수가 자동으로 관리되는 점이 인상적이었다.

2. Jenkins

프로젝트를 진행하며 새로운 PR이 생기거나 병합되는 등 main 브랜치에 변화가 생기면 웹훅을 통해 디스코드 알림을 받았는데, 이 웹훅을 CI/CD 파이프라인에 활용하여 빌드, 테스트, 배포 등의 과정을 자동화할 수 있음을 배웠다.

3. MSA 구조의 복잡성

모놀리식 아키텍처에서는 주문, 결제 등의 기능이 하나의 시스템 안에서 처리되므로 하나의 트랜잭션으로 묶어 문제가 발생하면 rollback할 수 있지만, MSA 구조에서는 하나의 트랜잭션으로 관리되지 않기 때문에 보상 트랜잭션을 작성해야 한다는 점을 배웠다.
MSA

문제 상황

1. Git bash에서 docker 명령어가 실행되지 않음

  • 설명: 실습 중 Git bash를 이용하여 아래와 같이 도커 명령어를 실행하였을 때 오류가 발생하였다.
    git bash 오류 발생

  • 원인: Unix 환경이나 windows 공식 터미널(cmd, powershell 등)에서는 잘 동작하지만, 비공식 터미널인 git bash에서는 -it 플래그와 같이 TTY, STDIN/STDOUT에 민감한 명령이 잘 동작하지 않는다고 한다.

  • 해결 방법: 아래 사진과 같이 winpty 명령어를 함께 사용해 해결하였다. 해당 명령어는 windows의 비표준 터미널과 TTY/STDIN 요구 사항 사이의 중간 계층 역할을 수행한다.
    docker 문제 해결

2. Kubernetes에서 명령어가 실행되지 않음

  • 설명: 아래 사진과 같이 명령어를 입력했을 때 deployment, service, ingress가 삭제되지 않았다.
    kubectl 삭제 실패

  • 원인: 리소스 이름을 쉼표와 공백(, )으로 구분할 경우 터미널이 인자를 제대로 분리하지 못해, kubectl이 명령어를 올바르게 해석하지 못한다고 한다.

  • 해결 방법: 공백 없이 쉼표(,)만으로 연결하니 정상적으로 실행되었다.
    kubectl 삭제 성공

데브옵스 프로젝트

이번 주에는 데브옵스 프로젝트의 백엔드, 프론트엔드를 구현하고 Docker, Kubernetes, Jenkins를 이용한 배포 작업을 진행하였다.
백엔드 및 프론트엔드는 이전 프로젝트에서 경험해봤기에 맡은 부분을 기능적으로 큰 문제 없이 구현할 수 있었고, 아직 개선할 점은 남아있지만 전반적으로 원활하게 진행되었다.
일요일인 오늘 시간이 되는 팀원들과 함께 홍대의 한 스터디룸에서 만나 배포 과정을 함께 지켜보며 진행하였는데, 다소 어려운 부분이 있었다.
특히 로그 수집 및 분석 도구인 ELK 스택에 대한 연결 문제로 Kubernetes 설정 작업이 예상보다 길어지게 되었다. 현재 Kubernetes 작업이 대부분 마무리되어, 내일까지 Jenkins 파이프라인울 무사히 구성할 수 있을 것으로 예상한다.

느낀 점

이전까지의 프로젝트에서는 백엔드와 프론트엔드 개발 전반의 흐름이 잘 잡히지 않아 시행착오가 많았지만, 경험해본 부분은 어느 정도 익숙해졌음을 느낀다. 곧 마무리될 데브옵스 프로젝트와 이어질 최종 프로젝트를 통해 경험치를 쌓으며, 개발 역량을 더욱 기를 수 있도록 열심히 임해보려 한다.

profile
곽진웅, 백엔드 개발자 준비 중

0개의 댓글