모놀리식 -> MSA 전환 프로젝트 리뷰1

parang·2025년 6월 27일

LG CNS AM Inspire Camp 2기

목록 보기
50/50

드디어 정규 수업이 모두 끝나고 대망의 2차 프로젝트 기간을 맞이했다. 일주일 정도(일주일 조금 안됨)의 개발 기간이 끝나고 드디어 한숨 돌린다. 2차 미니 프로젝트의 주제는 1차 프로젝트였던 코드를 가지고 MSA로 전환하는 것이었다. 주제에 맞게 한 프로젝트를 그대로 들고 와 서비스를 나누었다.

우리가 채택한 프로젝트는 사용자의 관심사에 따라 AI로 뉴스를 추천해주고, 뉴스 요약 기능이 있는 서비스였다. 일단 소규모이기도 하고 실무에서도 자잘하게 서비스를 나누는 것이 더 비효율적이라고 보았기 때문에 서비스 3개 정도면 괜찮겠다 싶었는데 크게 3개로 나누어 진행했다.

AWS 운영 배포까지 넓히진 않았으며 쿠버네티스를 적용하였다.

각자 로컬 환경에서 MSA분리가 목적이었기 때문에 각 서비스를 도커 컨테이너화 해서 젠킨스로 이미지 빌드하는 방식으로 관리했다.

젠킨스 디스코드/슬랙 알림 설정

디스코드

디스코드에서 알림 받을 채널 설정 -> 웹훅 생성 -> url 복사

1-1. 젠킨스 플러그인 설치
1-2. 파이프라인에 알림 추가

아래는 2-2. 로 진행한 예시 코드이다.
Jenkinsfile

enviroment {
	DISCORD_WEBGOOK = credentials('id')
}

stage 아래

post {
	success {
    	echo '✅ 빌드 성공!'
        sh """
        	curl -H "Content-Type: application/json" \\
                 -X POST \\
                 -d '{"content": "[빌드 성공]\\n- 프로젝트: ${APP_NAME}\\n- 태그: ${params.TAG}\\n- 이미지: ${DOCKER_IMAGE_NAME}"}' \\
                         ${DISCORD_WEBHOOK}
        """
    }
    
    failure {
      ...
    }
}

써보고 싶었던 기능인데 팀원분 한분이 적용해주셔서 쉽게 적용하고 바로 이해할 수 있었다.

다만, 중간에 오류가 있었는데, url을 젠킨스 파이프라인에 같이 적용하는 방법에 이슈가 있어서 젠킨스 credentials 에 직접 url을 넣고, id를 적어 파이프라인에 적용하는 방식으로 변경하였다.

슬랙

슬랙도 기본적으로 디스코드와 매우 흡사하다.

1-1. 젠킨스 플러그인 설치
1-2. 파이프라인에 알림 추가

코드는 중간 content -> text 로 변경만 하면 된다.

디스코드와 슬랙의 차이점은 슬랙이 템플릿 확장이 더 좋다고 한다.

아무튼 이런 식으로 젠킨스 빌드할때마다 정보를 바로 바로 확인할 수 있다.

트러블슈팅

1. openfeign

뉴스서비스에서 유저서비스를 호출할때 서비스 디스커버리가 유저 서비스를 찾지 못하는 이슈가 발생했다.

첫시도 : 로드밸런서 의존성 (o) + name 명시 (호출 실패)

두번째 : 로드밸런서 의존성 (x) name + url + path 까지 명시 (호출 성공)

2. db 연결 오류

내 로컬 환경에서 뉴스 서비스는 13308 포트번호를 사용하고 별도의 db 컨테이너를 사용하였다. (다른 팀원들은 통합)
그런데 jdbc 연결 오류가 자꾸 발생하여 로그를 확인해보니

  1. user 권한 없음.
    => user 사용자 생성 후 권한 설정.
    으로 해결.

  2. 사용하려는 news 데이터 베이스 없음
    => database확인 후 생성.

profile
파랑입니다.

0개의 댓글