1. CodeDeploy Agent 설치를 하고 이후에 EC2에 CodeDeploy 관련 Role을 추가해주는 경우 CodeDeploy Agent Restart를 해줘야 적용이 된다.
2. ApplicationStop 단계에서 실행되는 스크립트가 수정이 되더라도 적용이 안 될 수가 있다. 아래 경로를 찾아서 제거해줘도 되지만 aws deploy create-deployment시 --ignore-application-stop-failures 옵션을 추가해주는 것이 확실하다.
3. AppSpec의 hook에 추가한 스크립트가 실행 되는 경로는 Code Deploy Agent가 설치된 경로이다. docker compose를 사용하면 경로를 체크한다. (cd $PATH로 이동해서 실행 등)
The servlet container uses this interface to create a session between an HTTP client and an HTTP server. The session persists for a specified time period, across more than one connection or page request from the user.
서블릿 컨테이너는 javax.servlet.http의 HttpSession 인터페이스를 사용하여 세션 기능을 제공하는데 일반적으로 HttpServletRequest의 getSession()을 호출하면 세션을 가져오거나 옵션에 따라 없을 경우 생성해서 반환해준다.
서블릿 컨테이너의 세션 저장소는 Map 형태로 되어 있는데 HttpSession 인스턴스가 value에 저장이 되고 httpSession 또한 내부적으로 Map 형태로 생성이 된다. 그래서 setAttribute()로 로그인 정보를 저장할 수 있다.
로그아웃을 할 때 로그인 세션 정보를 제거하기 위한 방법으로는 HttpSession의 removeAttribute()와 invalidate() 메서드가 있다,
invalidate()는 세션 자체를 무효화하고 제거하고 removeAttribute()는 현재 세션에서 특정 key-value만 제거를 한다.
removeAttribute()로 키만 제거를 하면 httpSession 인스턴스는 WAS의 세션 저장소에 남아있어서 invalidate()를 사용하는 것이 좋다.
진행중인 프로젝트에 Jira를 처음 사용해봤는데 맛만 봤는데도 너무 편리하고 유용한 것 같다. 지라로 이슈를 생성하면 티켓 번호가 할당되는데 해당 티켓 번호로 브랜치를 만들고 커밋 메시지에 티켓 번호를 입력하면 해당 이슈에서 편리하게 볼 수 있다.
깃허브에도 이슈가 있긴하지만 잠깐 사용해본 느낌으로는 지라가 깔끔하고 눈에 확 들어와서 좋은 것 같다. 하지만 깃허브 이슈와 마찬가지로 티켓 번호를 입력하는 것을 실수로 깜빡하거나 틀리게 적는 경우가 종종 생길 수 있는데 좋은 방법이 없나 찾아보니 git hook을 사용해서 티켓번호 입력을 자동화 해줄 수 있었다.
git hook은 git에서 특정 상황에 특정 스크립트를 실행하는 기능으로 git repository에서 기본으로 지원을 하고 있다. 깃 훅을 잘 활용하면 잘못 푸쉬하는 것을 사전에 막는 등 유용한 기능이 많은 것 같다. 이번에 사용할 것은 prepare-commit-msg으로 커밋 메시지를 만든 후에 실행이 되는 훅이다. 아래 블로그를 보고 prepare-commit-msg.sample 파일을 수정해서 커밋을 할 때 브랜치 이름으로 이슈 번호를 찾아서 커밋 메시지 앞에 추가를 하도록 변경을 했다.
근데 스크립트는 실행이 되는데 뭐가 잘못된건지 계속 적용이 안되서 삽질하다가 결국 아래 방법으로 해결을 했다..(ㅠㅠ)
git hook은 .git 디렉토리에 저장되기 때문에 설정 스크립트나 템플릿을 활용하는 등의 방법으로 공유를 해야 되는데 이런 방법은 실수를 하면 제대로 적용이 안 될 수도 있다고 한다. 그래서 npm을 사용하고 있다면 husky 사용을 권장하는데 husky는 npm 모듈로 편리하게 깃 훅을 적용할 수 있다. husky로 지라 티켓번호 자동화를 하는 방법은 아래 블로그에 깔끔하게 나와있다.