✏️ [Java] 내가 Java17을 선택한 이유
·
Language·CS/Concepts
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기24년도에 진행한 두 개의 프로젝트 Sucat, 스스LAW에서 나는 모두 Java17을 선택해서 사용했다.이번 글에서는 Java8, Java11, Java14, Java17 ... 등 많은 버전에서 Java17을 선택한 이유를 작성해보려고 한다.참고로 Spring Boot 3.0부터는 Java17부터 지원하고 있기 때문에 Spring Boot 3.0 이후 버전을 고려하고 있다면 Java17 이상을 도입해야 한다.⭐️ Java17? 다른 버전과 차이가 뭔데?Java11Java8과 경쟁 상대로 가장 많이 언급되었던 것은 Java11이다. 그 이유는 우선 LTS였기 때문이다.Oracle에서 Java8을 사용한 레거시 프로젝트들이 너무 많은 것을 고려..
[시행착오] 회원과 채팅방의 연관관계는 N:M일까? 1:N일까?
·
Troubleshooting
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기⭐️ 서론내가 진행하는 프로젝트 중에는 Sucat 프로젝트가 있다.이 프로젝트는 재학중인 대학교 커뮤니티이다. 기존의 대중적으로 많이 사용하는 커뮤니티 서비스가 이미 존재했지만, Sucat 프로젝트는 기존 서비스에 존재하지 않는 여러가지 기능과 특징을 추가했다.대표적으로게임 기능1:1 게임, 학과별 랭킹, 개인 랭킹친구 기능채팅 기능크게 보면 이 3가지인데 이러한 기능들을 추가한 목적은 명확했다. 바로 '친목'이다.요즘 대학생들을 보면 서로가 친해질 기회가 MT, 술자리 등 사교적인 자리에만 존재했다. 유명한 커뮤니티가 존재하지만 이는 철저한 익명성을 보장하기 때문에 오프라인에서의 친목까지 이어지기가 어려웠다.때문에 1:1 게임 등을 통해서 친..
[시행착오] 서버 배포 시 Cookie 통신이 안되는 문제 With SameSite
·
Troubleshooting
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기⭐️ 서론AI 법률 상담 서비스(스스Law, SSL)를 개발하던 중 로그인/회원가입 과정에서 문제가 발생했다.아래는 문제를 해결하면서 노션에 정리했던 내용을 다듬은 것이다.📌 고민사항SSL의 로그인/회원가입은 Spring Security + OAuth 2.0 + JWT를 사용해서 소셜 로그인으로 구현했다.소셜 로그인을 구현해 본 것은 처음이라 소셜 로그인 또한 자체 로그인 시스템과 같이 JWT를 Header에 담아서 클라이언트에 전달해 줄 수 있을 것이라고 생각했다.그러나 소셜 로그인의 경우에는 회원가입/로그인 과정에서 페이지가 강제 Redirect되기 때문에 JWT를 Header에 담아서 전달해도 프론트엔드 단에서 이를 받아서 활용하는데 어..
[시행착오] 외부 API 통신시 RestTemplate를 사용하지 않고 WebClient를 사용한 이유
·
Troubleshooting
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기⭐️ 서론AI 법률 상담 서비스 프로젝트(스스Law)에서는 외부 API와의 통신이 필요했다.Langchain을 사용해 만든 법률 지식과 판례를 학습 시킨 ollama3 모델과 소통해야하기 때문이다.알고있는 외부 API 소통 방법은 RestTemplate 밖에 없었기에 추가로 찾아보면서 외부 API 소통 방식을 결정하기로 했었다.아래는 고민을 하면서 노션에 정리했던 내용을 다듬은 것이다.📌 고민사항백엔드 서버와 AI 서버는 개별적으로 배포하며 외부 API 통신을 하며 정보를 주고 받는다.Spring에서 외부 API를 호출하는 방법RestTemplateWebClient외부 API를 호출하는 방법에는 RestTemplate, WebClient를 제..
[시행착오] 빈 간의 순환 참조(Circular Dependency) 문제
·
Troubleshooting
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기⭐️ 문제 원인Error Code***************************APPLICATION FAILED TO START***************************Description:The dependencies of some of the beans in the application context form a cycle: chatRoomController defined in file [/Users/sangmin8817/Desktop/SSL/build/classes/java/main/com/lawProject/SSL/domain/chatroom/api/ChatRoomController.class]┌─────┐| chatRoo..
[시행착오] 대화형 AI와 백엔드가 소통하는 경우 WebSocket, SSE 중 무엇을 사용해야할까?
·
Troubleshooting
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기서론SSL(스스Law)라는 "법률 상담, 서류 생성/첨삭 서비스" 프로젝트를 진행하고 있다.이번 글에서는 스스Law 프로젝트를 초기 설계하면서 했던 고민 중 하나에 대해서 작성하려고 한다.고민 사항프로젝트의 기능 중 '법률 지식을 학습한 AI와 법률 상담을 하는 기능'이 있다.실시간 통신 기능을 구현해본 적 없었기에 실시간 통신에 사용되는 WebSocket, SSE 중 어떤 것을 사용해야할지 고민이 됐다.!초기 설계시 노션에 정리했던 글!회원과 GPT가 대화를 한다고 생각해서 양방향 통신이라고 생각했지만, 이 경우 회원의 대화 상대는 항상 GPT로 고정된다.그러므로 양방향 통신을 할 이유가 없다고 생각해서 찾아봤더니 이미 GPT API에서 SS..
[시행착오] AWS 프리티어 비용 과금 이슈, 해결 방법
·
Troubleshooting
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기프로젝트를 진행하면서 어느정도 개발이 끝나고 서비스 배포 준비를 했다. 배포 서비스는 대중적인 AWS를 사용했고, EC2와 RDS를 사용하기로 했다.AWS를 선택한 이유는 아래와 같다.가장 대중적이며, 검색 자료가 많다.프리 티어를 1년 제공하기 때문에 비용적으로 유리하다.서비스를 AWS로 배포하고 3일 뒤 서버를 재부팅하기 위해 AWS 홈페이지에 들어갔는데 충격적인 화면을 봤다.AWS에서 비용이 발생하고 있던 것이다.관려 자료를 찾아보니 2024년 2월 1일부터 AWS의 Public IPv4 주소 사용이 유료화되었다.https://aws.amazon.com/ko/about-aws/whats-new/2024/02/aws-free-tier-750..
💡 게시판 - 검증(Bean Validation)
·
Project/나의 작은 프로젝트
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기✏️ 검증1 - Validation에서 검증 기능을 소개했다.(왜인지 모르겠지만 글이 날라갔다.. 추후에 다시 작성해야할 것 같다.)검증 기능을 지난 글에서 소개한 것처럼 매번 코드로 작성하는 것은 상당히 번겁롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다.@Entity@Datapublic class Board extends TimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @NotBlank(message = "공백x", groups = ..
💡 게시판 - 메시지, 국제화
·
Project/나의 작은 프로젝트
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기✏️ 메시지, 국제화 글을 작성했다.이번에는 내가 만들던 게시판에 메시지, 국제화를 적용하려 한다.사실 나의 게시판은 해외 사람이 사용할 일이 없기 때문에 국제화를 할 필요가 없다. 그러나 공부 차원에서 적용하려고 한다.⭐️ 메시지먼 메시지를 추가 등록하자.board.main=게시판 메인 페이지label.title=제목label.author=작성자label.content=내용label.imageFile=이미지 파일label.createdDate=작성 시간label.modifiedDate=수정 시간label.search=검색어:page.write=게시글 작성page.list=게시글 목록page.modified=게시글 수정button.write=게..
💥 Springboot Multipart 파일 업로드 용량 초과 에러
·
Troubleshooting
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기게시판의 이미지 업로드 기능을 만들던 중 고화질의 이미지를 업로드 하면 오류가 생기는 문제를 발견했다. 이유를 찾아보니 파일 업로드 용량을 따로 설정하지 않아서 발생한 에러였다.Error: FileSizeLimitExceededExceptionnested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitEx..