AWS 4

[2/2] AWS Lambda와 Sharp로 이미지 리사이징하기 (이미지 최적화)

사용 동기 웹 사이트 속도의 첫 인상을 결정하는 것은 아마도 첫 이미지 로딩 시간일 것이다. 50x50 사이즈의 이미지를 로딩하는데 10MB 짜리 400x400 사이즈 이미지를 로딩하며, 심지어 페이지에 다시 돌아왔을 때 캐싱도 되어있지 않다면 유저는 그 사이트가 느리다고 생각할지도 모른다. 이를 해결하기 위해 리사이징(Resizing)기술을 제공하는 모듈(sharp)이 나오게 되었고, 이미지 용량을 줄여 로딩 속도를 빠르게하는 Best practice로서 널리 통용되어 사용되고 있다. 이 글에서는 1 편에서 소개했듯이 AWS Lambda 함수로 썸네일을 생성하는 방법을 소개한다. 근데 만약 Lambda를 한번이라도 써본적이 있다면, 여기서 이런 의문점이 생길 수도 있다. 굳이 Serverless 서비스..

AWS 2021.12.02

[2/2] AWS DMS 마이그레이션 후, PostgreSQL 버전 차이로 인한 primary key constraint 버그 (DB 마이그레이션)

문제 상황 데이터가 정상적으로 마이그레이션됐는데 예약이 안 되는 버그가 발생했다. > eb logs --debug eb cli인 위 커맨드로 로그를 확인했다. 그리고 다음과 같은 SQL failed 에러를 발견했다. id가 default로 생성되지 않아서 생긴 500번 에러였다. 좀 이상했다 users.id는 원래 아래 TypeORM 데코레이터에 의해 Auto generated 돼야 하는데 말이다. @Entity({ name: 'users' }) export class User { @PrimaryGeneratedColumn('uuid') id: string; } 그래서 postico로 DDL을 찾아보기 시작했다. 그리고 머지않아 정답을 발견했다. Table DDL 관찰 원본 RDS의 Reservation..

AWS 2021.11.26

[1/2] AWS DMS를 사용하여 Heroku adds-on DB를 Beanstalk RDS로 migration하기 (DB 마이그레이션)

사용 동기 지난 2주 동안 Heroku 기반으로 돌아가는 서버를 AWS 인프라로 완전히 migration하기 위해 열심히 삽질을 하였다. 어떤 AWS 인프라를 사용하여 배포할지 자료도 많이 찾아봤는데, 그 중 고민됐던 서비스들은 ECS Fargate과 Elastic Beanstalk이었다. 최종적으로는 Elastic Beanstalk Node.js 플랫폼을 사용하여 배포하기로 하였다. 그 이유는 ECS Fargate와 Beanstalk(docker 플랫폼) 서비스들은 로컬에서는 분명 실행이되는데, Production 환경에서만 실행하면 컨테이너들끼리 depends_on이 잘 되지 않아 항상 Node.js 프로세스가 죽었다. 그래서 Docker를 프로덕션에서 사용하는 것은 조금 미루기로했다. 무튼 그래서 ..

AWS 2021.11.26

AWS Route 53 활용하여, Sub domain 생성하고, SSL 적용하기

사용 동기 클라이언트 웹사이트를 가비아에서 도메인을 구입하여 사용중이었다. 근데 Beanstalk 환경으로 생성한 서버 URL도 깔끔하게 보이기 위해 도메인을 붙이고자 했는데 도메인을 또 사기에는 돈이 아까워서 서브 도메인을 적용하게 되었다. 서브 도메인 적용 해보기 > 도메인 하나가 등록됐다고 가정하고 진행 > Bean stalk으로 환경을 생성했다고 가정하고 진행 1. Route 53 호스팅 영역에 들어간다 2. 등록한 도메인을 클릭 3. 레코드 생성 클릭 - '레코드 이름'은 서브 도메인 이름이다. - '레코드 유형'은 CNAME을 사용하자. 이는 서브 도메인을 다른 도메인으로 트래픽을 전달할 때 쓰인다. - 값에는 트래픽을 보낼 도메인을 넣어주자. 위 경우에서는 Beanstalk 환경으로 생성한 ..

AWS 2021.11.25