728x90
졸업작품 프로젝트에서 마주한 문제 졸업작품 프로젝트 ‘코리’를 개발하는 과정에서 GPT API를 사용하여 AI로부터 원하는 응답값을 얻어오는 기능을 구현하던 중 너무나도 어지러운 문제에 직면했다.코리는 GPT를 사용해서 개발자들의 전반적인 작업에 도움을 주는 어시스턴트 서비스이다.‘코드 리팩토링’, ‘변수명 추천’, ‘주석을 통한 코드 설명’ 기능이 존재하는데, 이를 구현하기 위해 SpringBoot 환경에서 HttpClient를 사용하여 GPT API에서 제공하는 gpt-3.5-turbo 모델과 통신하여 응답 값을 얻어오는 것 까지는 성공했다.하지만 여기서부터 몇 가지 문제에 직면하면서 고민이 시작되었다. 문제1. 일정하지 않은 응답 형태 GPT 사이트에 접속하여 질문을 던질 때, 질문을 조금만 ..
🤔 적용을 고려한 이유“우리집 반려동물의 AI 프로필 사진관” 펫튜디오 프로젝트를 개발하는 과정에서 반려동물 AI 프로필 사진을 만들기 위해 Stable Diffusion 모델에 학습시킬 10~12장의 이미지를 S3에 저장해야하는 상황이 발생하였다. 일반적으로 이러한 경우에 클라이언트→서버 방향으로 이미지 파일을 전송하고 서버→S3 방향으로 이미지를 저장시키는 구조를 대체적으로 많이 봐왔을 것이다. 하지만 10장~12장이나 되는 이미지를 서버로 전송하는 일은 일반적은 요청과는 다르게 서버에 가하는 부하가 컷고, 금전적인 이슈로 AWS 프리티어의 t2.micro를 사용 중인 현재 인프라 환경에서 최대한 부하를 줄이는 작업은 불가피했다.때문에 이미지 저장의 책임을 클라이언트 측에 위임하여 서버에 가해지는 ..
H2 DB를 공부하면서 H2를 In-Memory 모드로 사용할 수 있다는 것을 알게 되었다.(H2 DB는 보면 볼수록 유용한 기능을 많이 제공하는 것 같다.) 이 In-Memory 모드를 사용하면 개발환경 및 테스트 환경에서 유용하게 사용할 수 있을 것 같다는 생각에 학습하여 적용해보았고, 학습 기록을 포스팅해보려고 한다. 인메모리 모드 (In-Memory Mode) H2의 인 메모리 모드 는 데이터베이스의 데이터가 메모리에만 존재하고 디스크에 저장되지 않는 모드이다. 테스트 또는 개발 환경 같은 특정 케이스에서는, 데이터의 영속이 필요하지 않을 수도 있다. H2 DB는 그러한 상황을 위해 데이터가 영속되지 않는 인 메모리 모드를 지원한다.인메모리 모드는 모든 Connection이 close되면, D..
우테코 레벨2의 미션을 수행하면서 로컬 DB로 H2를 사용하게 되었는데, 신기한 점이 있어 기록해보고자 한다.H2는 DB를 작동시키지 않아도 사용이 가능했던 것이다. 위 코드는 실제로 DB에 접근하는 통합 테스트인데, 로컬에 H2 DB 서버를 설치하지도 실행시키지도 않은 상황에서도 정상적으로 작동한다. 어떻게 그럴 수 있는 지에 대해서 H2 DB의 3가지 모드를 살펴보면서 알아보겠다. H2 DB의 3가지 Connection Mode H2는 다른 DB와 다르게 3가지 연결 모드를 가지고 있다는 특징이 있다. H2 DB는 위와 같이 3가지 모드가 있는데 그 중 Embedded Mode 와 Mixed Mode 는 H2 DB 를 설치해서 서버를 실행할 필요없이스프링부트에서 h2db 의존성만 build.gr..
내 테스트 코드는 제대로 작성되었을까? 🤔우테코 프리코스를 진행하면서 요구사항에 의해 테스트 코드를 작성하였다.실수를 방지하기 위해 정말 꼼꼼하게 테스트 코드를 작성하며, 엣지 케이스를 찾기 위해 열심히 노력하였다.하지만 미션 코드가 길어지다보니 "모든 로직에 대한 테스트가 되어있는가?"라는 스스로에 대한 의구심이 들기 시작했다.때문에 이 의구심을 해결하기 위한 방법을 찾아보았고, 인텔리제이에서 플러그인 설치없이 코드 커버리지를 측정을 할 수 있다는 것을 알 수 있었다. 나는 이를 활용해 최대한 모든 로직을 테스트 할 수 있었고, 몇 번의 클릭만으로 많은 장점을 얻을 수 있다고 생각했기 때문에 이를 공유하고자 간단히나마 글을 작성해보고자 한다. 💭 코드 커버리지란?코드 커버리지는 내 프로젝트의 코드들..
실패의 연속 🥲나는 작년 말 우테코 5기의 최종 테스트에서 떨어졌었다.사실 아쉽게 떨어진 수준이 아니라, 간단한 문제였지만 문서를 디테일하게 보지 않은 탓이 컸다.(A로직 수행 후, B로직 수행)을 n번 반복해야 했는데A를 n번 수행 후, B를 n번 수행하는 방식으로 구현해 버린 것이다. 문서에 설명이 나와있었지만 그 당시의 나는 초긴장 상태였고 글 읽는 것을 평소에 하지 않아 꼬여잇는 글은 잘 이해하지 못했던 것 같다. 그리고 마음을 놓고 지내던 작년 12월 28일, 탈락 소식을 찜질방에서 보게 되었다.기대하던 활동이었기에 너무나도 허무했다. 그런데 여기까지는 역량 부족으로 넘긴다고 쳐도, 그 뒤로 몇 달간 계속해서 탈락의 연속이었다.우테코 탈락, 소프트웨어 마에스트로 탈락, 디프만 탈락 등등..