바쁘다 바빠 현대사회...
잠시 여유가 생긴 지금 밀린 회고를 끄적끄적 써보려고합니다.
기억이 모조리 휘발되기 전에 지금이라도 써야만해...!!
신나게 놀고 온 대가를 치루는 한주였습니다. 😅
본 주차 회고는 10월 10일 ~ 10월 15일사이에 일어났던 일입니다.
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 잘 마무리해봅시다~!