우아한테크코스 레벨 4 7주차

주노·2023년 10월 26일
0

우테코 5기 일상

목록 보기
32/34
post-thumbnail

서론

바쁘다 바빠 현대사회...
잠시 여유가 생긴 지금 밀린 회고를 끄적끄적 써보려고합니다.
기억이 모조리 휘발되기 전에 지금이라도 써야만해...!!

신나게 놀고 온 대가를 치루는 한주였습니다. 😅

본 주차 회고는 10월 10일 ~ 10월 15일사이에 일어났던 일입니다.

피움 🌱

Connection Pool 설정을 위한 사전 준비

Hikari CP Connection Pool 값 설정을 위해 Jmeter를 사용하고자 했습니다. (Tomcat Thread 설정했을 때 사용했던 툴이라서)

네트워크 통신으로 인한 요청, 응답 값을 고려하지 않기 위해 dev서버에 jmeter를 두고 localhost로 요청을 보내기로 했습니다.

jmeter 테스트 이후 html로 출력되는 결과를 확인하고자 nginx로 해당 파일을 확인할 수 있도록 열어줬습니다. 👍

jenkins plugin으로 jmeter를 실행시킬 수도 있었으나 이 또한 시간관계상 그냥 cli로 돌리도록 구성했습니다.

무중단 배포

프로젝트에 spring-boot-actuator 의존성을 추가하여 어플리케이션의 health check가 가능해졌습니다~!

이에 무중단배포 쉘 스크립트가 다음과 같이 변경되었습니다.

#!/bin/bash

echo "> 현재 구동중인 Port 확인"

# CURRENT & NEW 포트 확인
if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null; then
    echo "현재 8080 포트가 사용 중입니다."
    CURRENT_PORT=8080
    NEW_PORT=8081
elif lsof -Pi :8081 -sTCP:LISTEN -t >/dev/null; then
    echo "현재 8081 포트가 사용 중입니다."
    CURRENT_PORT=8081
    NEW_PORT=8080
else
    echo "8080과 8081 포트 모두 사용 중이지 않습니다."
    exit 1
fi
# NEW 포트 사용중일 경우 종료
if lsof -Pi :$NEW_PORT -sTCP:LISTEN -t >/dev/null; then
  echo "NEW_PORT가 사용중입니다."
  PID=$(lsof -Pi :$NEW_PORT -sTCP:LISTEN -t)
  kill -9 $PID
  echo "사용 중인 NEW_PORT 종료했습니다.."
  sleep 3
else
  echo "NEW_PORT가 사용 중이지 않습니다."
fi

#Spring ON
nohup java -jar "pium.jar" --spring.profiles.active=dev --server.port=$NEW_PORT > log_$NEW_PORT.txt 2>&1 &

echo 백그라운드 모드로 애플리케이션 실행 성공 !!

# 새로 가동하는 서버 상태 확인
sleep 15

for retry_count in {1..10}
do
  response=$(curl -s http://localhost:$NEW_PORT/actuator/health)
  up_count=$(echo $response | grep 'UP' | wc -l)

  if [ $up_count -ge 1 ]
 then # $up_count >= 1 ("UP" 문자열이 있는지 검증)
      echo "> Health check 성공"
      break
  else
      echo "> 새롭게 가동하는 서버의 상태가 UP이 아닙니다."
      echo "> Health check: ${response}"
  fi

  if [ $retry_count -eq 10 ]
  then
    echo "> Health check 실패. "
    echo "> Nginx에 연결하지 않고 배포를 종료합니다."
    exit 1
  fi

  echo "> Health check 연결 실패. 재시도..."
  sleep 10
done

# 새로 가동하는 서버로 전환

echo "> 전환할 Port: $NEW_PORT"

echo "> Port 전환"
echo "set \$service_url http://127.0.0.1:${NEW_PORT};" | sudo tee /etc/nginx/conf.d/service-url.inc

echo "> NGINX Reload"
sudo service nginx reload

echo "> CURRENT_PORT를 종료합니다"
CURRENT_PID=$(lsof -Pi :$CURRENT_PORT -sTCP:LISTEN -t)
kill -9 $CURRENT_PID

🚀 미션

레거시 코드 리팩터링 미션이 시작되었습니다~!

1단계는 테스트를 통한 코드 보호가 요구사항이네요!

Mocking을 할지 통합테스트를 할지 고민이 되었는데 레벨 2 지하철 미션에서 통합테스트 방식으로 작성했던 방식이 생각났습니다.

뭔가 이번에는 안해본 방식으로 해보고싶다~ 생각이 들어서 DAO를 전부 Mocking해서 서비스를 테스트했습니다

(이거 나중에 1000만배 후회함..)

지금 드는 생각이지만 API call을 통한 테스트(RestAssured 같은거..)를 수행하는것이 리팩터링을 진행하면서 정신건강에 이롭지않을까 생각이 듭니다.

💻 근로

Gradle Task를 구성해서 OpenAPI CodeGenerator를 쓸만하게 만들었었는데 변수 선언이나 Task들이 너무 난잡하게 되어있어서 약간의 리팩터링을 거쳤습니다~

중간에 공지&출결팀의 요구사항을 문서화하기 위해 블랙캣과 페어로 OpenAPI Spec 문서화 작업을 진행했습니다 👍

페어룸에서 우다다다 문서 작성완료!
꽤나 재밌어서 시간가는줄 모르고 작업을 진행했네요 😆

💪 일상

우테코 6기 모집공고가 캠퍼스 여기저기 걸려있네요~!
새로운 캐릭터(목성인가..💫)도 귀엽네요 'O'

아이폰 15 프로 Owner 필립... 부러워서 여기 박제할게~

밀린 5, 6주차 회고도 이때 작성했네요.. 밀리고 또 밀리는 회고바다~

피플행복팀에서 주최한 7시반 내고향 행사에도 참가했습니다~!
이전기수 선배님들을 뵙는 즐거운 자리였습니다~

4기 야호, 헌치, 주디, 연로그 반가웠습니다~!!
도움되는 많은 이야기를 해주셔서 감사합니다 🙇‍♂️

정리

한글날까지 신나게 놀다온 과거의 내가 미처 생각하지 못했던 일들을 와르르 받으면서 꽤나 정신없는 한주였습니다...

다음주가 최종 데모데이라는게 실감이 안날정도로 하루하루 정신없이 보던 기억이 나네요 😵‍💫

레벨 4 잘 마무리해봅시다~!

profile
안녕하세요 😆

0개의 댓글