시작하며 f-lab 멘토링을 시작한지 어느덧 2개월이 지났다. 이제 프로젝트를 해야하는데 CI/CD를 구성하며 배포 스크립트를 구성하며 잘 모르는 내용들이 많아 정리를 해보려고 한다. 회사에서는 AWS의 Elastic Beanstalk를 사용해서 배포 스크립트를 작성할 필요가 없없는데 프로젝트에서는 ncloud 서버를 이용하기 때문에 배포 스크립트를 작성해주어야 했다. 배포 스크립트 echo "> write-now pid 확인" JAR_PATH=/deploy CURRENT_PID=$(ps -ef | grep java | grep write-now | grep -v nohup | awk '{print $2}') echo "$CURRENT_PID" if [ $CURRENT_PID -z ]; then echo..
Micrometer 스프링부트 어플리케이션을 구동하면 기본적으로 JAVA 환경에서 돌아가기 때문에 jvm에 관한 정보도 있고 HTTP 통신에 대한 정보, 시스템 환경에 대한 정보 등 다양한 metric 정보들이 생산된다. 우리가 이런 metric 정보를 모니터링 하기 위해서는 모니터링 툴에 맞는 형식으로 정보를 맞춰줘야 하고 또 모니터링 툴에 맞는 API로 전송해야 한다. 이런 것들을 개발자가 모두 제어하기는 어려운 일이다. 이런 작업을 추상화한 것이 Micrometer이다. Micrometer를 이용하면 표준 수집형식에 맞게 자동적으로 metric 정보가 수집되고 모니터링 툴에 맞게끔 세팅, 전송하는 역할은 Micrometer의 구현체를 이용할 수 있다. 스프링부트 엑추에이터 스프링부트 엑추에이터는 스..
발단 f-lab 멘토링을 하면서 HTTP status code에 대한 얘기가 나왔다. 멘토님의 질문은 다음과 같았다. "데이터가 없음"을 나타내는 상태코드는 무엇일까? 나는 해당 질문에 대해 500이라 답했다. 부끄러운 일이지만 그간 회사에서 거의 혼자 일을 하며 기능 개발에 급급한 나머지 HTTP 요청에 대해 status code는 어떤 상황에 어떤 code로 반환할지 등 기본적인 HTTP 통신에 대한 고려는 잘하지 못하였다. 이번 기회에 HTTP 자체에 대한 기본적인 정리를 해보고 자주 사용하는 status code에 대해 정리해보고자 한다. HTTP란? HTTP에 대해서는 워낙 많은 자료들이 있어서 이해하는데 어렵진 않을 것이다. HTTP는 HyperText Transfer Protocol의 약자로..
Scale up과 Scale out 일반적으로 자체 서버를 가지고 있는 극히 일부의 회사들을 제외하고 대부분의 회사들은 AWS와 같이 클라우드 서비스를 통해 서비스를 운영한다. 즉 AWS에서 제공하는 가상 서버를 이용한다. 가상 서버를 이용하는 장점 중에 하나가 바로 가상서버이기 때문에 Auto Scaling에 유리하다는 것이다. Auto Scaling이 무엇인지 이해하려면 Scale up과 Scale out을 이해하고 있어야 한다. Scale up AWS EC2로 예를 들어보자. 기존 서비스는 t2.micro 인스턴스로 운영 중이라고 가정한다. t2.micro는 가상 CPU가 1개이고 메모리도 1GiB이다. 트래픽이 많지 않은 서비스라면 해당 스펙으로도 운영이 가능할 것이다. 그런데 점점 트래픽이 늘어..