책 스프링부트와 AWS로 혼자 구현하는 웹서비스 (이동욱 저)를 실습하고 수정된 부분과 후기를 적어보려 한다.
코드 타이핑 후기를 적는게 아니라 실수한거나 변경된 점들을 적는 것이니 오해없길 바란다.
Travis CI
UI가 달라져서 헷갈렸는데 매칭되는 부분을 잘 읽어봐야 한다. 그리고 Organization은 유료로만 적용이 가능한가보다. 그래서 개인용으로 부랴부랴 옮겼다.
.travis.yml 파일을 정의해야 하는데, 보안상 중요한 키 값은 설정에서 환경변수로 정의할 수 있다. 각 동작을 정의할 수 있는데, 언어, 브랜치, 배포 등등의 행동을 정의하여 원하는 동작을 수행시키면 된다.
그리고 메일로 알림이 오도록 했는데, 처음 한 두번은 오더니 그 이후부턴 안온다. 타이핑 오류가 발생하면 에러로그가 디테일하게는 아니지만 어느 정도 유추 가능한게 찍히니 유의하자.
Travis CI vs Github Action
둘 다 CI 유료 툴이지만 travis보단 github action이 좀 더 범용적인 것 같다. 마이그레이션하는 방법도 docs에 정의되어 있고, github와 바로 연동할 수 있을뿐더러 github pro라면 혜택이 좀 더 많다.
AWS
너무 방대해서 설정할게 많았다. 이래서 기업들도 사용하나 보다.
EC2: 서버를 돌릴 환경을 인스턴스로 구분하여 서비스한다. 구체적인 스펙을 정의하고 있는데 나는 프리티어로 사용해서 상관없었다. 기업용으로 사용할거라면 적당한 스펙을 찾는게 중요해보인다.
탄력적 IP라는게 있는데 인스턴스를 내렸다가 올리면 IP가 변경되기 때문에 이를 고정하기 위한 IP를 서비스한다. 책에서 나오길 만들어 놓고 연결하지 않으면 비용이 청구된다고 한다.
나는 Java 11을 사용했는데 11은 yum으로 설치할 수가 없다. 그래서 아마존에서 제공하는 correto라는 OpenJDK를 사용했다. https://gre-eny.tistory.com/m/343
S3: 파일을 두는 하드디스크?같은 느낌으로 이해하면 된다. 버킷이란 단위로 구분이 되는데, 파일이 업로드 되면 버킷에 해당 파일을 확인할 수 있다. code deploy와 연동하기 위해 이곳에 빌드된 파일을 업로드하게 되는데, 빌드 역할을 수행하는게 travis이다. 하지만 s3에 접근하기 위해서 권한을 허용한 사용자를 정의해야 한다.
RDS: 데이터베이스 구축을 AWS에서 정의한 메뉴얼대로 해주는 서비스이다. 오픈소스인 maria db를 사용하지만 그래도 mysql과의 차이점은 어느 정도 아는게 좋아보인다. https://sabarada.tistory.com/164
code deploy: s3에 올라온걸 배포하는 서비스이다. EC2와 S3에 접근하기 위해 IAM이란걸로 접근 권한을 설정해주어야 하는데, 이게 좀 복잡하다. 정책이 한 두개 있는게 아니라 만약 실무에서 사용한다면 각 정책별로 어떤게 있는지 잘 알아보아야 할 것 같다.
설정이 완료되면 appspec.yml에 정의된 대로 s3에 올라온 파일들을 ec2로 배포하게 된다.
배포 스크립트를 작성하는 부분에서 쉘 스크립트 문법이 헷갈려서 헤맸다. 혹시나 서버 배포를 생각한다면 대부분 리눅스 계열에서 할 것이기 때문에 쉘 스크립트를 공부하는걸 추천한다.
책에 쓰여진 정도는 echo, if, 함수 작성 등의 문법 정도면 될 것 같다.
'Web' 카테고리의 다른 글
쿠키와 세션의 차이 (0) | 2022.03.06 |
---|