반응형

멘질멘질] 2023 졸업 프로젝트

반응형
멘질멘질] 2023 졸업 프로젝트

Spring Boot] API 문서의 신뢰도를 높이기 위한 Spring Rest Docs 도입

문제 상황 기존에 Notion으로 API 문서를 작성하고 관리해왔으나 여러 가지 문제점이 존재하였다. HTTP Request, Response에 대한 스펙을 직접 작성해야 한다. 따라서 코드를 수정해서 결과가 변경되면 매번 문서의 내용을 고쳐야한다. 100% 정확한 문서라고 단정할 수 없다. 요청과 응답 양식을 수정하면서 변수명이 수정되거나 변수가 추가되는 등 작업이 수행되면, 그때마다 문서도 수정해야 한다. 단적인 예로, Response 양식에서 Dto 객체 명을 followingUserInfoDto에서 followingUserDto로 변경하였는데 API 문서에 업데이트하는 것을 빠뜨려서, 프론트 측에서 데이터를 제대로 받지 못하는 문제가 발생하였다. (아래 사진) 시도 1: Swagger 도입 따라서..

멘질멘질] 2023 졸업 프로젝트

Spring Boot] STOMP 프로토콜

1. STOMP 프로토콜과 POST 요청 동시에 테스트 챗봇 대화에서, 클라이언트가 POST 요청을 서버로 보내면, MongoDB에 저장된 채팅 메시지 내역을 STOMP 프로토콜로 클라이언트에게 전달한다. 이 과정에서, 아래 코드의 결과로 전달되는 messageResponse 객체의 payload를 확인하고자 하였으나, 아래와 같이 (truncated)로 log가 잘리는 것을 확인할 수 있다. simpMessagingTemplate.convertAndSend("/queue/chat/room/" + roomDto.getRoomId(), messageResponse); 더보기 2023-09-01 21:28:46.240 TRACE 34120 --- [tboundChannel-7] s.w.s.s.t.s.WebS..

멘질멘질] 2023 졸업 프로젝트

AWS] 컨테이너 이미지를 사용한 AWS Lambda 배포

캡스톤디자인에서, 챗봇 질문 시스템 설계를 하면서 구현한 내용을 정리하였다. 1. 챗봇 시스템 설계 절차를 글로 풀어서 설명하면, 사용자(멘티)가 질문을 입력한다. Spring Boot에서 질문을 받은 다음, ChatGPT API를 사용하여 사용자의 질문을 세 줄 요약한 메시지를 받는다. 멘티 닉네임, 멘토 닉네임, 원본 질문(1번), 세 줄 요약된 질문(2번)을 Flask로 전달한다. Flask에서, 먼저 AWS Translate API를 사용하여 세 줄 요약된 질문을 영어로 번역하는 작업을 수행한다. 이후 멘티의 질문 원본, 질문 요약본, 질문 요약본(en) 등의 데이터를 MongoDB에 저장한다. 번역된 질문(en)과 기존 MongoDB에 저장된 질문 요약본(en)을, Sentence Transfo..

멘질멘질] 2023 졸업 프로젝트

Junit5] @CreatedDate NullPointer Exception

오류 상황 아래와 같이 Entity 에서, @CreateDate 어노테이션을 사용하였음. @CreatedDate @Column(name = "created_at") private LocalDateTime createdDate; 하지만 테스트 코드에서, save() 메소드로 데이터를 저장하는데, created_at column 값이 null이 담긴다. Main Application 위에 @EnableJpaAuditing, Entity 클래스 위에 @EntityListeners(AuditingEntityListener.class) 를 사용했으나 오류가 해결되지 않았다. 해결 application-test.yml 에, JPA 설정이 빠져 있었다. 설정을 추가하니, 정상적으로 값이 들어간다. spring: jp..

멘질멘질] 2023 졸업 프로젝트

Ubuntu] Docker 용량 줄이기

Ubuntu 서버에서, 프로젝트를 docker-compose를 사용해서 배포를 하는 상황. 프로젝트를 재 배포할 때 마다, docker rm, docker rmi를 사용하여 기존에 있는 docker container와 image를 제거하였으나, 용량이 조금씩 증가하는 현상이 발생함. 1. 상황 df-h 명령어를 사용하여 용량을 확인할 수 있는데, 위에서 언급한 것 처럼 docker-compose 재 배포 이후, docker rm, rmi를 사용하여 기존에 남아있는 것들을 제거하였음에도 불구하고, 계속 용량이 증가하는 것을 확인할 수 있었다. 기존 용량 증가된 용량 2. 해결 방안 아래 명령어로 안쓰는 이미지와 컨테이너를 제거 sudo docker system prune -a -f 결과 용량 확보 성공 참..

멘질멘질] 2023 졸업 프로젝트

Ubuntu] Next.js Dockerfile 경량화(Optimize)

2023.06.21 - [Amazon Web Services(AWS)] - AWS] Next.js Spring Boot 도메인 연결 및 배포 AWS] Next.js Spring Boot 도메인 연결 및 배포 Next.js 프로젝트를 S3과 CloudWatch를 사용하여 배포하지 않고, EC2에 띄운 뒤 도메인을 적용하여 배포 현재 상황 EC2 인스턴스는 Ubuntu 20.04 이미지를 사용 FE 인스턴스 : Next.js 프로젝트를 pm2를 사용하 mjkim.tistory.com 이전 글에서 Dockerfile로 EC2에 배포하였으나 Docker image 용량이 너무 커서, Dockerfile 경량화를 통해 Docker image 크기를 줄이고자 하였다. 1. 기존 코드 FROM node:16.13.2..

나른한 찰리
'멘질멘질] 2023 졸업 프로젝트' 카테고리의 글 목록