학습메모 1을 활용하여 간단한 CRUD 게시판(Board Module)과 회원인증(Auth Module)을 직접 구현해보자.프로젝트 생성boards module, controller, service 생성새로운 서비스 메소드 추가해보기Board의 Model 정의하기게시물
네이버 부스트캠프 웹·모바일 8기 그룹 프로젝트 진행에 있어, 특정 한도 내의 NCP 크레딧을 사용할 수 있게 되었다. 이에 따라 서비스 기획 단계인 1주차에 CLOVA API를 포함한 각종 AI Services를 검토해 우리가 개발할 서비스에 NCP API를 활용할
이번 그룹프로젝트에서 CI/CD, 배포 자동화와 같은 DevOps 분야에 딥다이브를 해보고자 최근 배포 자동화에서 가장 빈번하게 사용되는 GitHub Actions에 대해 자료 조사를 하고, 우리 프로젝트 시스템 스펙에 맞는 자동화 방식과 스크립트(workflow) 구
그룹프로젝트에서 사용되는 기술 스택은 다음과 같다. 본 문서에서는 위 기술스택 중 백엔드(Backend), 배포(Deployment) 영역에서 사용되는 기술 및 서비스에 대한 소개와 채택 이유에 관해 설명해본다.NestJSNestJS는 왜 개발되었을까? 사용하는 이유를
프론트엔드에서 yarn berry 사용을 결정한 후, 백엔드에서도 의존성 관리 패키지의 통일을 위해 동일하게 yarn berry를 사용하기로 결정했다. NestJS의 @nestjs/cli에서는 기본적으로 yarn berry로 새 프로젝트를 생성하는 기능을 nest ne
개인의 성장 목표, 기술적 고민거리와 트러블 슈팅 경험 등을 문서로 정리합니다.피어세션에서 받은 질문과 피드백을 정리하여 추가해두길 권장합니다. 상시로 진행한 개인 회고 결과가 있다면 해당 기록으로 갈음할 수 있습니다. 배포GitHub Actions와 Docker를 활
NestJS의 기초적인 CRUD 구현을 TDD로 개발하기 위한 테스트 코드 작성법을 익혀본다.현재 NestJS 공식문서 가이드대로, Repository없이 Module-Controller-Service 아키텍처를 준수하며, Controller와 Service에 대한 j
가상화를 기반으로 인터넷을 통해 컴퓨팅 리소스를 제공하는 서비스국내 주요 회사들도 알게 모르게 다 AWS를 쓰고 있다고 보면 됨최대의 장점은 요금 이전에 "탄력성"마음대로 서버를 증설하고 없앨 수 있고 또 이게 엄청 빠르다쓴 만큼 돈을 낼 수 있다AWS 계정은 최초 가
앞으로 어떻게 할 지TDD는 e2e방식으로만 하자! 만약 정말 복잡한 서비스 로직이 생기면 따로 그것만 TDD기본적으로 유닛테스트는 구현 후에두 가지 방식 중 선택GET /boards, POST /board, … 이렇게 모든 테스트 코드를 다 짠 다음에 구현GET /b
목표 e2e 방식의 TDD으로 다음의 이슈 해결 다음 이슈를 분석해 요구사항을 구체화하고 e2e 테스트로 만들자 #12 [02-05] 서버는 아이디 중복을 검사하고 결과를 클라이언트에 전송한다. #16 [02-09] 서버는 회원가입 데이터를 받아 형식 검사와 아이
저희 프로젝트의 특성상 프론트의 Three.js관련 Task가 많아 백에서 담당하는 API 구현이 프론트보다 훨씬 빨리 진행되고 있습니다.그래서 프론트와 백 담당 인원이 협의하여 API 인터페이스 문서로 명세하기보다 구두로 기본적인 협의만 하고, Swagger로 인터페
리뷰 피드백 반영한 것 충돌 없이 PR mergeboard, auth CRUD 완성게시글 CRUD API 구현 PR (w TDD)회원가입 및 인증 API 구현 PR (w TDD)docker로 FE, BE 모두 배포해보기, nginx 추가nginx 역할 : FE 빌드해서
개인의 성장 목표, 기술적 고민거리와 트러블 슈팅 경험 등을 문서로 정리합니다.피어세션에서 받은 질문과 피드백을 정리하여 추가해두길 권장합니다. 상시로 진행한 개인 회고 결과가 있다면 해당 기록으로 갈음할 수 있습니다. 이번 주는 TDD 때문에 울고 웃었던 한 주였습니
NCP에서 VPC/subnet 및 서버/DB 인스턴스 구성DB(MySQL) 설치 및 원격 접속 가능하도록 설정WEB, WAS Dockerfile 작성하고 build, push, pullnginx 설정파일 작성 및 docker 네트워크 학습docker-compose 설치
VPC, Public/Private Subnet NCP에서 가장 중요한 건 IAM IAM은 계정의 Authentication, Authorization을 담당하는 서비스예요 그 다음이 VPC VPC는 가상의 서비스 네트워크 망임 (중요하고 재밌음) 네트워크 여
이 사람이 최초로 트랜잭션이라는 개념을 제안함1070쪽 분량의 책 내내 트랜잭션에 대해서만 얘기함. 관계형 DB가 트랜잭션을 잘 support해주긴 하지만 직접적으론 상관없다.이 책을 당연히 읽을 건 아니니 DB 전공서적 내 Transaction 챕터 50~60페이지
구성도클라우드로 배포되는 일반적인 웹서버는 위 그림과 같다.AWS, NCP 등의 클라우드 서비스 네트워크에 개인별로 VPC 네트워크를 구성함VPC 네트워크 내에 public용 subnet, private subnet을 구성함외부와의 연결을 위해 IG(인터넷 게이
Redis 설치 및 연동페어분이 Redis 관련 코드를 추가한 후 Redis 연결이 되지 않아 서버 프로젝트가 정상적으로 실행되지 않는 문제 발생.학습 겸 로컬 환경에서 Redis를 설치하고 간단히 사용해보자.일단 업데이트 하고잘 설치된 것 확인. 페어분과 동일버전환경
Multer 설치 및 파일 업로드 API 구현Multer 설치 및 검증트러블 로그: Interceptor 방식 대안 구상로컬 업로드 기능 구현RED: 실패하는 테스트 코드 작성GREEN: 성공하도록 구현REFACTOR: 리팩토링개선board 모듈 입력값 유효성 검증PO
board 모듈 입력값 유효성 검증POST /boardParseIntPipe로 id 타입 int로 변경PATCH /board/:idPOST /board/:id/imageAuthGuard 적용트러블 슈팅 1 : Custom Guard 의존성 문제트러블 슈팅 2 : Sig
게시글 본문 암복호화CORS 허용스프린트때 직접 개발해두었던 암복호화 모듈을 활용해 utils에 넣었다. (학습메모 1)config 파일로 .env에 있는 AES_PASSWORD, AES_SALT를 활용하도록 보안처리이제 POST /board, PATCH /board/
게시글 본문 암복호화Entity 간 관계 적용 (OneToMany, ManyToOne, OneToOne)POST /board에 author <- nickname 직접 삽입user 외래키 활용하도록 메소드 개선좋아요 중복 비허용 (조인테이블 생성)게시글 하나당 사진
트러블 슈팅 : Object Storage 에러 => 해결AWS-SDK를 이용한 NCP Object Storage 파일 업로드, 다운로드S3와 호환되므로 AWS-SDK 모듈 등에서 Endpoint를 kr.object.ncloudstorage.com으로 설정해서 사용하면
GitHub Actions를 활용한 자동 배포HTTPS 적용앞선 GitHub Actions 스크립트 학습과, 각종 AI들의 도움을 받아 스크립트를 작성해봤다. 중간중간에 에러가 나는 부분을 잡아주느라 main PR을 여러번 올리며 고생을 좀 했다 ㅎ주요 에러 요인들은
개인의 성장 목표, 기술적 고민거리와 트러블 슈팅 경험 등을 문서로 정리합니다.피어세션에서 받은 질문과 피드백을 정리하여 추가해두길 권장합니다. 상시로 진행한 개인 회고 결과가 있다면 해당 기록으로 갈음할 수 있습니다. 이번 주는 개인 개발시간이 많았는데 안하던 것들을
Resize Image with Sharpimage resize+crop, 확장자 변경설치와 적용테스트학습메모 3을 참고하여 위와 같은 로직을 넣기로 했다.fit 속성은 참고로 위와 같은 옵션이 있다.본 프로젝트에선 cover가 적절.포맷 변경은 위와 같이 할 수 있다
store star & galaxy style with MongoDBmongoDB 설치 및 설정yarn add mongoose, MongoDB 연결스키마 생성, board 모듈에 등록서비스에 모델 주입게시글 작성 시 star 객체 입력받아 MongoDB에 저장트러블 슈
Sharp 플랫폼 종속성 문제 해결CI/CD 파이프라인이 모두 잘 완료되었으나, Sharp 패키지의 플랫폼 종속적 문제로 was가 죽어버리는 문제가 발생했다.학습메모 1을 참고 (공식문서)하지만 우리는 npm이 아니라 yarn berry.. --platform 옵션이
GET /stars, GET /post/:id 프론트 요청에 맞게 새로 구현쿼리 최적화TypeORM 쿼리 로그GET /starsGET /stars 쿼리 로그 확인MySQL 쿼리 플랜 조회GET /stars 쿼리 최적화TypeORM Query Builder로 최적화 적용
PATCH /post/:id 개선계획구현동작 화면DELETE /post/:id 개선계획구현동작 화면PATCH /star/:id 구현계획구현동작 화면게시글에 대한 수정 요청은 생성 요청과 마찬가지로 사진을 받을 수 있어야 한다.따라서 폼 데이터로 요청받도록 변경하고, 사
트랜잭션 적용PATCH /post/:id/like, PATCH /post/:id/unlikePATCH /post/:id, DELETE /post/:id트랜잭션 구현DELETE /post/:id에 적용PATCH /post/:id에 적용동작 화면필요한 로직에 트랜잭션을 적
PATCH /post/:id 트랜잭션 개선계획구현동작 화면POST /post 트랜잭션 적용구현동작 화면어제 트랜잭션 개선 당시 image 테이블에 새 레코드를 생성하는 부분은 트랜잭션이 따로 도는 문제가 있었다.uploadFile() 함수에서 이 로직을 밖으로 빼내서
CORS 트러블 슈팅그냥 배포할 땐 큰 문제 없었는데, 배포된 테스트용 BE 서버에 프론트 분들이 localhost에서 프론트 dev서버를 띄워 배포된 BE 서버에 요청을 보내는 경우, domain이 달라져 브라우저에서 set cookie 등을 차단하는 문제가 발생했다
개인의 성장 목표, 기술적 고민거리와 트러블 슈팅 경험 등을 문서로 정리합니다.피어세션에서 받은 질문과 피드백을 정리하여 추가해두길 권장합니다. 상시로 진행한 개인 회고 결과가 있다면 해당 기록으로 갈음할 수 있습니다. 미루고 미루었던 DB 딥다이브를 마음껏 할 수 있
멀티 스테이징을 활용한 docker 이미지 최적화docker 이미지 최적화 (yarn berry, 모노레포 고려)배포 테스트사전학습에서 배운 docker 이미지 최적화 전략을 활용, builder, runner로 스테이지를 구분 후필요한 데이터(dist, 의존성)만 b
어드민 페이지 Full Stack, 전체 글 조회기능 및 시스템 정보 조회기능 구현emotion 설치Button, Table 컴포넌트 생성전체 글 조회하기전체 글 조회 API 구현Board 컴포넌트 생성, 전체 글 조회트러블 슈팅: Vite dev/prod 환경변수 설
감정분석 AI API 연동사전 준비 (API 사용 신청 및 키 발급)구현테스트 (동작 화면)NCP 콘솔에서 AI/Naver API 사용 신청을 해두어야 사용 가능함. 도메인 등록 시 백엔드에서 접근해서 사용할 것이므로 localhost:3000을 등록해두자. 배포 시에
e2e 테스트 코드 작성, 테스트galaxy 모듈star 모듈board 모듈admin 모듈sentiment 모듈리팩토링, 코드 개선galaxy는 유저별로 할당되기 때문에, beforeEach에서 유저를 하나 생성해서 로그인까지 해두어야정상적인 API 호출이 가능하다.
개인의 성장 목표, 기술적 고민거리와 트러블 슈팅 경험 등을 문서로 정리합니다.피어세션에서 받은 질문과 피드백을 정리하여 추가해두길 권장합니다. 상시로 진행한 개인 회고 결과가 있다면 해당 기록으로 갈음할 수 있습니다. 미루고 미루었던 DB 딥다이브를 마음껏 할 수 있
서비스 유닛 테스트, mockinge2e 테스트, 파일 첨부결과 화면비즈니스 로직 전체에 대한 검증은 e2e 테스트에서 커버해주기 때문에,유닛 테스트에서는 함수 모킹을 통해 서비스 메소드의 에러처리가 잘 수행되는지를 꼼꼼하게 확인해줬다.board 모듈에는 transac