전체 글

이 글은 24년 하반기 AWS Certified Solutions Architect - Associate(이하 AWS SAA-C03) 자격증 취득을 위해서 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/best-aws-certified-solutions-architect-associate  AWS 시작하기On-Premise : 물리적인 서버를 직접 설치하여 운영On-Demand : 소비자가 있는 곳까지 찾아가서 상품과 서비스를 전달하는 것, 소비자의 요구 사항에 따라 즉시 제공하는 방식 (*demand : 수요) 리전 및 AZAWS Regions데이터 센터의 집합 (ex. us-east-1) 대부분의 서비스는 특정 리전에 연결되어 국한됨.A 리..
사용목적 현재 이메일 분류 관련 프로젝트를 진행하고 있습니다. 이메일을 분류하는 AI 모델이 있는데, 문제는 분류에 1개의 메일 당 2초 이상 걸리게 되었습니다. 사용자가 요청했을 때 실시간으로 분류하기에 메일 당 2초도 너무 긴 시간이고,  실시간으로 서비스를 제공하지 않더라도, batch 작업에서 병목이 생기기엔 충분했습니다. 처음에는 그냥 lambda에 cron 작업을 걸어서 돌릴 생각이었지만, 유저가 1명 가입할 때마다 평균 3000개 이상의 이메일 분류가 필요한데, lambda에 최대 실행 시간이 15분으로 정해져있고, 여러 경로에서 이메일 분류를 요청하는 상황에서, 분류부터 DB 저장까지 안정적인 처리가 필요했습니다.  규칙적으로 분류가 안된 email_id를 찾아서 SQS에 넘겨주면, Con..
0. 개발환경Python 3.12Docker Desktop 4.30 1. 문제의 발생 프로젝트 중 파이썬으로 개발된 AI 기능을 배포해야할 일이 생겼습니다. 항상 유지해야하는 서비스가 아닌 특정 시점에 Batch로 돌아가면되는 기능이라 EC2서버보다 lambda를 이용한 배포를 선택했습니다.(지금 생각해보니 spot instance로 특정시점에 자동으로 생성했다가 사용하고 지우는 사이클을 짜는게 비용이 더 저렴했을 수도..?) Python으로 학습된 모델 파일의 사이즈는 650MB로 람다에서 허용하고 있는 패키지 파일의 크기를 훌적 넘었습니다.  구글링을 해본 결과 2가지 해결방법이 있었습니다.1. 큰 파일은 S3에 올리고, 런타임에 S3에서 다운로드 해서 사용.2. Docker 컨테이너로 감싸서 ECR..
1. 서론 그간 백엔드 개발에 포커스를 맞춰 공부를 해오던 중, 너무 표면적인 코드와 툴에만 매몰되어 있다는 생각이 들었습니다. 프레임워크의 사용 방법에는 익숙해져갔지만, 내가 이걸 정말 알고 사용하는 것인가에 대한 고민이 있었습니다. 그러던 중 소마에서 인연이 된 한 형님에게 이 고민을 털어놓을 기회가 있었고, 본질적인(fundamental) 분야를 다루는 책 몇권을 소개해주셨습니다. '컴퓨터를 만드는 방법을 알 수 있다'라는 말에 끌려, 제일 먼저 손이 갔던 이 책에 대해 정리해보고자 합니다. Program Programming Programmer 시리즈로 'Charles Petzold'의 'CODE: The Hidden Language of Computer Hardware and Software'가..
· IT/자격증
정보보안산업기사 필기에 합격했습니다~ 이래저래 일정이 겹쳐서, 공부기간이 너무 짧아서 취소할까도 고민했는데, 벼락치기로 공부했던 방법이 도움이 많이되었던 것 같아서 공유해보려합니다. 공부기간 자격증 공부는 일주일정도 하루에 3~4시간정도 투자해서 공부했던 것 같습니다. 교대근무하면서 석야간 중에 틈틈이 지속적으로 했던게 암기에 도움되었습니다. 짜투리 시간에 잠깐씩이라도 들여다보면 도움 많이 되실 것 같습니다. 공부방법 1. 일단 문제집을 샀습니다. 구글링을 해봐도 '정보보안기사'에 대해서는 자료가 많이 나와도, 산업기사는 기사와 묶어서 설명하는 경우가 많았습니다. 그래서 기출과 해설을 모아서 보기위해서 문제집 구매를 결정했습니다. 2023년 때 미리 문제집을 사뒀어서, 이걸로 공부했는데, 따로 기출 기준..
0. 개발환경 Terraform : 1.7.3 Python : 3.12.x 1. 문제의 발생 Lambda로 크롤링 함수를 만들어서 서비스에 이용하고 있는데, 특정 parameter에 대해서 5XX에러를 띄우는 현상이 발생했습니다. 호출되는 과정은 NestJS Backend -> API Gateway -> Lambda(python) 순서로 호출됩니다. Postman에서 API Gateway를 호출하였을 때, 502 Bad Gateway와 함께 다음과 같은 에러 메시지를 return 했습니다. { "message": "Internal server error" } 2. 문제의 원인 및 해결 처음에는 단순한 크롤링 과정의 문제인줄 알았습니다. 하지만 로컬에서 lambda에서 사용하는 python 함수를 돌려본 ..
오늘은 NestJS에서 E2E(End-to-End) 테스트를 구성하며 있었던 이야기를 소개해보려고 합니다. Jest로 테스트를 구성하였고, 크게 3가지의 목표를 달성하고 싶었습니다. 1. Mocking을 최소화하여, 최대한 실제 시나리오와 유사하게 동작하도록 하는 것. 2. DB 특성을 가져갈 수 있도록, 테스트에서도 mysql DB를 사용할 것. 3. 자동화된 자체 QA를 수행할 수 있도록, Github Action과 연동되어 CI(지속적통합)를 지원할 수 있어야 할 것. 0. 개발환경 nest : 10.3.0 typescript: 5.3.3 typeorm : 0.3.19 jest : 29.7.0 docker-compose : 1.29.2 1. 문제의 발생 처음에는 테스트용 DB(이하 Test_DB)를..
0. 개발환경 nest : 10.2.1 class-validator: 0.14.0 * 참고 : class-validator - npm (npmjs.com) 1. 문제의 발생 // user.entity.ts @Entity('user') export class User extends CoreEntity { ... @ApiProperty({ example: '홍길동' }) @Column({ type: 'varchar', nullable: true }) @Length(2, 10) @IsString() public username?: string; ... } class-validator 라이브러리를 사용해서 'username' 필드의 Length를 제한하고, 예외의 경우를 넣어서 출력되는 메시지를 확인해보았습니다..
서론 오늘은 NestJS에서 파일을 업로드 받고, AWS S3에까지 저장하는 REST API를 공유해보려합니다. aws-sdk v2로 된 한국어 자료들은 많이 있는데, version3을 사용해서 만들어봤습니다. 일단 필자도 처음에는 aws-sdk v2를 사용해서, 파일 업로드 기능을 만들었습니다. 그런데, 서버를 run 할 때 version3으로 migrate해달라는 굉장히 거슬리는 문구가 뜨는 걸 볼 수 있었습니다. (node:2109) NOTE: We are formalizing our plans to enter AWS SDK for JavaScript (v2) into maintenance mode in 2023. Please migrate your code to use AWS SDK for Jav..
서론 프로세스간 데이터 전달을 위해서 DTO(Data Transfer Object) 사용한다. NestJS에서도 MVC layer간의 데이터 전달이나 request 요청을 받을 때도 DTO를 사용할 수 있다. 이때 한 Domain에 대해서, 여러 layer별로 dto는 조금씩 사용되는데, 모든 dto를 각각의 객체로 관리하는 건 어려운 일이다. 한 예시로 Register DTO와 Login DTO를 생각해보자. // register.dto.ts export class RegisterDto { email!: string; password!: string; username!: string; } // login.dto.ts export class LoginDto { email!: string; password..
파이랜스
PyPyStory