분류 전체보기
[AWS] Elastic Beanstalk graceful shutdown (feat. AutoScaling Lifecycle Hook - TERMINATING)
[AWS] Elastic Beanstalk graceful shutdown (feat. AutoScaling Lifecycle Hook - TERMINATING)
2022.11.10대상 서버가 종료될 때 미리 사전 작업을 해주고 싶은 분들에게 도움이 되는 글입니다. 제가 겪은 문제의 상황 백엔드 앱을 배포할 때마다 사용 중인 접속자가 튕기는 문제가 발생했습니다.. 왜냐하면 Websocket은 TCP 연결을 계속 유지하기 때문에 Stateful 했습니다. TCP connection이 맺어진 서버가 블루-그린 배포이든 롤링 배포이든 다운이 되는 순간 모든 클라이언트가 튕겼습니다. HTTP만 썼으면 세션을 외부에(Redis, PostgresSQL 등) 저장해 두거나 해서 이런 현상을 막을 수 있었겠지만 WebSocket은 애초에 stateful 해서 항상 튕겼습니다. 특히, 클라이언트에서는 현재 WebSocket 연결이 끊기면 main 페이지로 튕기게 되어있어서 기존 유저들이 불편함을 ..
웹 애플리케이션 공동 명의로 저작권 등록하는 법
웹 애플리케이션 공동 명의로 저작권 등록하는 법
2022.11.07오늘은 팀에서 modocode.com이라는 웹 페이지를 출시하고 공동 명의로 저작권을 등록한 경험을 나눠보고자 합니다. ㅎㅎ 같이 만든 웹 애플리케이션 저작물을 공동 명의로 등록하는 법에 대해 알아봅시다. 1. 저작권 등록 사이트에 접속합니다 2. 컴퓨터프로그램 등록을 누릅니다 3. 회원가입 후 로그인합니다 로그인합니다. 본인 인증까지하셔야 저작물 등록이 가능합니다. 4. 온라인 등록신청 버튼을 누릅니다 5. 이미 저작물이 등록됐는지 선택합니다 처음 등록하기 때문에 '아니오'를 누르고 다음을 눌러줍니다. 6. 등록권리자가 "본인"인지 "대리인"인지 선택합니다 저는 제 서비스를 제가 등록하기 때문에 본인으로 선택했습니다 신청서를 마저 작성하고 다음을 눌러줍니다. 7. 신청인(등록권리자)에서 공동 저작자를 ..
리눅스에서 호스팅 중인 서비스가 외부로부터 접속이 안 될 때 문제 확인 방법
리눅스에서 호스팅 중인 서비스가 외부로부터 접속이 안 될 때 문제 확인 방법
2022.11.04친구가 호스팅 한 주피터 노트북이 로컬에서는 접속이 되는데 인터넷 공인 IP로는 접속이 안 됐습니다. 친구를 도와주면서 제시한 절차를 한번 공유봅니닷. 내가 제시한 진단 방법은 다음과 같다. 1. tcpdump로 패킷이 들어오고 나가는지 확인한다 tcpdump를 실행한채로 외부에서 접속해본다. 어떤 포트로 패킷이 들어오고 나가는지 캡처하려면 sudo tcpdump port 포트 명령어로 실행한채로 기다리고 있으면 된다. 캡처한 파일을 내보내서 와이어샤크에서 확인할 수도 있다. 참고. 내 기억으로 tcpdump가 인바운드는 iptable보다 우선이고 아웃바운드는 아니였다 - https://serverfault.com/questions/233302/will-tcpdump-see-packets-that-are..
[AWS] AWS SES API를 사용해서 메일 보내기 (feat. NodeJS)
[AWS] AWS SES API를 사용해서 메일 보내기 (feat. NodeJS)
2022.10.09이 글에서 사용하는 것 AWS SDK - AWS SES API NestJS 시작하기 전에 AWS SES는 두 가지 방법으로 사용할 수 있습니다. SMTP 인터페이스를 사용하거나 SES API를 사용해야 합니다. 저는 NestJS 애플리케이션 상에서 메일을 보내고 싶었습니다. 이 글에서는 API 방식을 설명해보겠습니닷. API를 사용한다면 크게 3가지 방식으로 메일을 보낼 수 있습니다. 1. Simple SES 객체의 Simple Email 보내는 함수 sendEmail(args: SendEmailCommandInput, options?: __HttpHandlerOptions): Promise; sendEmail(args: SendEmailCommandInput, cb: (err: any, data?: S..
NestJS v8에서 v9으로 업그레이드 하는 법
NestJS v8에서 v9으로 업그레이드 하는 법
2022.10.05최근에 NestJS v9의 Major Update가 있었다. REPL 기능이라든지 Swagger 업그레이드라든지 필요한 기능들이 있어서 업그레이드를 진행해보고자 했다. v9 업데이트에 관해서는 아래의 글에서 간단하게 참고할 수 있다. https://trilon.io/blog/nestjs-9-is-now-available NestJS v9 is now available Today I am excited to announce the official release of Nest 9: A progressive Node.js framework for building efficient and enterprise-grade, server-side applications. trilon.io v9.0.0 PR은 http..
2022년 3분기 + 요즘 생긴 관심사 정리 (#모도코_프로젝트)
2022년 3분기 + 요즘 생긴 관심사 정리 (#모도코_프로젝트)
2022.10.043분기 정리되게 일정이 빡빡했는데 그 와중에 우리가 목표로 한 기능 구현은 모두 소화해내어서 나름 뿌듯하다.매일마다 짧게 한 스크럼이 많은 도움을 주었다. 이것저것 일정에 둘러싸여 있을 때 특정 부분에서 막히면서 시간이 생각보다 많이 걸리는 경우가 있었다. 데일리스크럼 덕분에 내 현상황을 팀원들이 모두 매일마다 알 수 있었기에 스프린트 내에 끝내지 못해도 당황하거나 큰 문제가 발생하지 않았던 듯하다. 내가 맡은 기능 구현에 막혀도 상황공유가 되니 빠르게 능동적으로 대처할 수 있었던 듯하다. 교훈: 답도 없이 막힌 것은 빠르게 공유하자?ㅎㅎ추석도 있고 스터디도 하고 인터뷰도 하고 UX 리뷰도 받고 등 팀의 외부 일정 때문에 이것 저것하는라 정신없었던 3개월이다. 7월 예전에 읽은 코어 자바스크립트 책으로 ..
[AWS] VPC의 NAT 비용을 줄여보자 :: Ubuntu로 NAT 인스턴스 만들기
[AWS] VPC의 NAT 비용을 줄여보자 :: Ubuntu로 NAT 인스턴스 만들기
2022.09.25두 배가 되어버린 AWS 비용.. 1달 전에는 테스트용으로 그냥 Public IP로 다 통신하도록 하고 최저 사양으로 다 올렸었다. 하지만 보안이나 비용적인 측면, 나중에 할 부하 테스트를 생각해서 Amazon EC2 리소스가 인터넷에 노출되는 방식을 제어하기 위해 싹다 갈아엎었다. 이 글(https://coding-groot.tistory.com/165)처럼 VPC를 구성해서 AWS 리소스를 재배치했다. 글 요약 VPC를 구성해서 Private, Public Subnet을 만들었다. 외부 인터넷에 노출되지 않아도 되는 인스턴스들은 Public IP를 할당하지도 않았고 Private Subnet으로 격리시켜서 Internet Gateway와의 직접적인 접점을 없앴다. Private Subnet에 있는 친..
소예다방(soyeah coffee) :: 고려대역 근처 카페
소예다방(soyeah coffee) :: 고려대역 근처 카페
2022.08.28잠시 쉬어갈 겸 들린 카페: 소예다방 위치: 고려대역 4번 출구 소예다방은 고려대역 4번 출구 근처(걸어서 5분)에 있다. 고려대역 4번 출구로 나오면 파리바게뜨가 보일 것이다. 계속 걸어가자. 파리바게뜨를 지나서 나오는 좌측 골목길로 들어가면 소예다방 카페가 나온다. 메뉴 후기 어제 큰 발표 하나를 끝내고 잠시 환기시킬 겸 친구가 하고 있는 카페에 들렸다. 메뉴판에서 멀뚱멀뚱거리고 있으니 친구님이 친절하게 파시는 메뉴에 대해 설명해주셨다. ㅋㅋㅋ 여기는 가게에서 블렌딩한 두 종류의 커피를 팔고 있다. 다크하고 진한 맛을 내는 찰리-블렌딩과 고소하며 약간의 산미가 있는 마틴-블렌딩이다. 나는 찰리-블렌딩을 마셔봤다. 은은한 초콜릿과 연기향이 느껴진다. 커피 너무 맛있어서 금방 마셨다. 그리고 시킨 딸기 ..
[AWS] S3를 통해 정적인 Asset 호스팅하기
[AWS] S3를 통해 정적인 Asset 호스팅하기
2022.08.22S3를 사용해서 정적인 Asset을 호스팅해보자 S3는 99.99%의 가용성을 제공해줍니다. 단순히 Asset을 업로드하는 용도로 쓸 수도 있고 웹사이트를 호스팅할 수도 있고 다양한 용도로 사용할 수 있습니다. Storage 요금(요청 요금은 별도)은 1TB 당 25달러 정도라 저렴합니다. 이번 글에서는 S3를 통해 정적인 Asset을 배포해봅시다. 다음 글에서는 AWS의 CDN 서비스인 CloudFront랑 S3 bucket을 연동해서 CloudFront로 배포되도록 설정하는 것을 적어보겠습니다. 주의 이미지, 폰트처럼 변하지 않는 정적 Asset 배포용 방법입니다. 개발하면서 변하는 마크업 파일이나 정적 사이트 호스팅은 조금 다른 설정을 가져가셔야 합니다. 준비물 S3와 CloudFront의 권한을 ..
CloudFront에 올린 Font(woff, woff2)가 CORS 때문에 차단되는 경우
CloudFront에 올린 Font(woff, woff2)가 CORS 때문에 차단되는 경우
2022.08.21폰트가 계속 차단이 되는 경우 확인해 볼 것 CORS 에러가 발생한 상황 프로젝트를 하다가 유독 Web Font(woff, woff2)만 CORS에 의해 막히는 이상한 현상이 발생했습니다. 아래와 같이 CSS에서 우리가 CDN에 올려준 Font를 불러오도록 했습니다. Access-Control-Allow-Origin 응답 Header에 이 Font를 요청하는 사이트 주소도 잘 추가되어 있었습니다. 일단 저는 S3에 폰트를 업로드하고 CDN이랑 연동을 했습니다. 그리고 CDN에서는 S3 bucket의 CORS 정책을 쓰도록 했습니다. CloudFront와 CORS 정책은 아무 문제가 없어 보였습니다. 그런데 계속 Access-Control-Allow-Origin에 의해 CORS 의해 막혔습니다. Conso..
[AWS] VPC에 Subnet, NAT Gateway, Internet Gateway를 구성해보자
[AWS] VPC에 Subnet, NAT Gateway, Internet Gateway를 구성해보자
2022.08.07오늘은 다음과 같은 구조로 VPC를 구성해보려고 합니다. Region 확인 먼저 Region이 Asia Pacific(Seoul)인지 잘 확인해줍니다. 언제 US East (N. Virginia)로 변할지 모르니 항상 어떤 자원을 생성하기 전에 먼저 체크합니다. VPC 서비스 창으로 접속 VPC 서비스를 검색해서 접속합니다. 현재 저는 default로 생성해주는 VPC 하나만 있습니다. VPC를 생성합니다 VPC 생성(Create VPC) 버튼을 눌러줍니다. VPC 설정하기 VPC Settings은 다음과 같이 했습니다. 첫 번째로 VPC만 만들 것인지 VPC 말고도 다른 것을 한꺼번에 설정한 것인지 묻습니다. 귀찮기 때문에 여기서 다 설정해주도록 하겠습니다. VPC and more를 클릭해줍니다. 그리..
[AWS] NestJS 프로젝트를 Code Pipeline을 사용해서 Elastic Beanstalk으로 배포하는 법
[AWS] NestJS 프로젝트를 Code Pipeline을 사용해서 Elastic Beanstalk으로 배포하는 법
2022.07.22Elastic Beanstalk을 사용하면 빌드한 JS 코드를 업로드해서 간단하게 배포할 수 있습니다. 하지만 매번 빌드해서 올리는 것은 비효율적이고 귀찮습니다. 매번 push할 때마다 알아서 빌드하고 올려준다면 어떨까요? 이런식으로 GitHub의 코드로 자동 배포하는 것은 여러가지 방법으로 가능합니다. GitHub Actions로도 여러 방법으로 할 수 있습니다. 푸쉬할 때 마다 GitHub Actions를 통해 빌드하고 그 파일을 업로드해서 배포를 할 수 있습니다. Ex. https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/eb3-cli-git.html 푸쉬할 때 마다 Actions 상에서 소스코드를 그냥 S3에 업로드하고 빌드해주는 애(Cod..