할일
AWS 책 읽기(~411)
생활코딩 HTTP CACHE 듣기
알고리즘(~4.3)
AWS 책
배포 자동화를 위해 프로젝트 내에 deploy.sh 파일 작성하여 자동 배포 테스트를 해보았는데, 수정 사항이 반영이 안됐다. 이유는 배포할 때 기존 애플리케이션 PID를 찾아서 죽인 뒤 재기동 시키는 부분에서 기동 중인 PID를 정상적으로 찾지 못했기 때문이다.
기존에는 CURRENT_PID=$(pgrep -fl freelec-springboot2-webservice | grep jar | awk '{print $1}') 로 PID 를 찾았는데 CURRENT_PID=$(pgrep -fl freelec-springboot2-webservice | grep java | awk '{print $1}') 로 변경해야지 정상적으로 PID를 찾아서 기동중인 프로세스를 죽였다.
기존 deploy.sh은 jar 명령어로 정상적으로 PID를 찾았는데 프로젝트 내에서 작성한 deploy.sh은 찾지 못했다.
위 명령어나 아래 명령어나 freelec-springboot2-webservice의 이름 프로세스에서 jar나 java 라는 문자열이 들어가있는 것을 찾는건데 jar 파일 까보니 두 문자열 모두 존재한다. 그래서 의아하긴한데 일단 해결은 됐고 애플리케이션 기동 상태 확인할 때 통상적으로 grep java로 많이들 입력하는 것 같으니 그렇게 기억하고 있으면 될듯..!
그리고 무중단 배포를 위해 엔진엑스를 이용하였다. jar 파일을 2개로 둬서 각각에 포트 할당하고 서비스 하고 있지 않은 프로젝트에 배포를 한 뒤 정상 구동중인게 확인이 되면 nginx reload 명령어로 서비스를 하게끔 만드는 것.(해당 명령어는 0.1초 이내에 완료된다고 한다.)
무중단 배포 스크립트가 꽤나 많았는데, 직접 구축해야할 때가 오면 찾아서 하면 될 것 같다.
지금은 대강 이런식으로 스크립트 파일들 작성해서 무중단 배포가 되는구나 정도로만 이해하자!
마지막 장이어서 1인 개발시 도움이 될 도구에 대해서 추천받았다.
Disqus - 자바스크립트 코드만 사이트에 등록하면 위젯 형태로 서비스에서 바로 사용이 가능한 댓글기능
LiveRe - 국내에서 만든 소셜 댓글 서비스
Zapier - SNS 연동이 필요할 때 자동으로 포스팅되는 서비스
IFTTT - SNS 연동을 지원하는 서비스(블로그 글 등록 -> 트위터에 자동 링크 공유)
구글 애널리틱스 - 사이트 분석 도구(1인 개발시 필수로 적용해 볼 서비스)
클라우드플레어 - CDN(Content Delivery Network) 서비스(트래픽 분산)
Mailchimp - 이메일 마케팅 서비스(월 12000개의 메일 무료/다양한 기능 지원)
전체적인 프로세스를 배울 수 있는 책이어서 몇번씩 더 봐도 좋을만한 책인 것 같다!
생활코딩 HTTP CACHE
웹 브라우저에서 If-Modified-Since 필드와 If-None-Match(E-Tag)라는 값을 웹 서버에 전달하면 서버는 그걸보고 캐시된 데이터를 줄지 다시 리로드받아야할지 응답해준다(.Last-Modified와 E-Tag를 응답). 캐시된 데이터를 사용한다고 해도 기본적인 요청과 응답은 주고 받기 때문에 통신은 일어난다.
no-store는 캐시를 저장하지 않겠다는 의미이고 no-cache는 캐시가 유효한지 매번 서버에 질의하는 것 유효하지않다면 리로드해서 데이터를 받아오고 유효하다면(E-Tag와 같고 변경된 데이터가 아니라면) 캐싱 데이터를 사용한다.
캐시의 생명주기를 지정하는 필드인 max-age=0 과 no-cache가 의미가 같다.
이유는 유효성 검사를 통해 데이터가 변경됐을 때만 다시 데이터를 받기 때문이다.
알고리즘
오늘은 two pointers 알고리즘과 Sliding window에 대한 문제였는데 확실히 문제를 여러번 접해봐야 이런 문제에 대한 해결 방법을 생각하는 스킬이 늘 것 같다!!! 내일도 꾸준히 문제 풀어보자~!