분류 전체보기 119

[aws] 프로젝트 build와 jar 파일 실행의 차이

🏕️상황 간신히 [.gradlew build] 명령어를 통해서 빌드를 했는데 내가 원하는 건 막 요상한 그림이 나오면서 프로젝트가 '실행'되는 것인데 저렇게 build successful 이라는 글씨만 예쁘게 나오고 끝(?)나는 것이다...ㅠㅠ 원래 프로젝트가 실행되면 서버 엔드포인트를 호출 했을 때 요청에 대한 값이 나오는데 저렇게 502 오류가 발생. 🛣️과정 멘토분께 여쭤보니 굉장히 챙피한 일이었다... 개념 부족으로 인하여 당연한 일을 못한 것이다...ㅎ 🗝️해결 빌드하면 나오는 jar파일을 실행시키셔야죠 라고 하셨다!! 그래서 확인해보니 build를 하면 jar 파일이 생성되고, 그 파일을 java -jar 와 함께 실행시키면 된다. 💚./gradlew build Gradle은 프로젝트의 빌드,..

[aws] RDS DB이름 확인하기

🏕️상황 RDS 연결정보를 입력하기 위해서 중간에 DB이름을 적어야 해서 확인하려 들어갔더니 빈 값이 있는 것이다? 그래서 검색을 해보았는데 가장 많이 나오는 DB이름을 생성하는 방법은 데이터 베이스 생성 시에 만드는 것이다. 하지만 나의 경우에는 이미 만들어져 있는 데이터 베이스가 존재했기 때문에 위의 방법을 사용할 순 없었다. 그래서 지난번에 빌드에 성공했을 때 이미 만들어져 있을 것으로 예상이 되어서 mysql 쉘을 통해서 확인해 보기로 하였다. 🗝️해결 mysql -h your-rds-endpoint -P your-rds-port -u your-username -p 위의 명령어를 내 정보에 맞게 입력하니 바로 mysql 쉘이 등장하였다. 즉, 인스턴스를 통해 RDS에 접근한 것이다. show da..

[spring boot] aws 백엔드 배포하기(3. 서버 빌드 오류잡기)

🏕️상황 오류 메시지들을 다 검색해 보니 결국은 다 하나였다. DB연결이 안 된다는 것!! 이것 때문에 거의 1주일 안 되게 소모를 해버렸다... 원래 우리는 ENC() 방식을 사용해서 DB정보를 암호화했었는데 복호화를 aws에서도 진행하려면 KMS를 사용하거나 좀 더 복잡한 방식을 사용해야 해서 정보 자체를 환경변수에 저장하는 방식으로 가기로 했다. 🛣️과정 여기에 우리가 로컬에서 사용했던 db정보를 넣고 "왜 안 되냐ㅠㅠ"를 외쳤다..ㅋㅋㅋㅋㅋㅋㅋㅋ ec2에서 빌드하려면 rds 연결정보를 넣어야 했는데 바보 같은 짓을 하고서는 고통스러워했다. 인터넷에 있는 것들을 보면 대부분은 '퍼블릭 액세스 허용'을 하여 접근하는 방식이 많이 나와 있지만 그렇게 하면 보안상의 취약점이 생기기 때문에 최대한 저 방식..

[spring boot] aws 백엔드 배포하기(2. 서버에서 빌드)

🏕️상황 우리 프로젝트는 JAR 파일을 사용하여 Java 코드 빌드 방식을 활용했다. 현재 서버에 public ip가 없어서 스프링 코드를 scp 등의 명령어를 이용해 업로드할 수 있는 구조가 아니다 보니 NAT gateway를 설정했다. (NAT gateway가 있으면 private subnet에 있는 서버라고 하더라도 외부 인터넷에 outbound 요청은 가능) private subnet에 있지만 NAT gateway를 설정했기에 직접적인 inbound 요청은 모두 차단하는 상태이다. (대신 서버에서 outbound 요청은 가능하다.) 그래서 직접적으로 파일을 업로드하는 것은 안 되고, git clone, git pull은 가능한 형태이다. 🗝️해결 1. Session Manager로 인스턴스로 접근..

[Notion] 노션 pdf 내보내기 오류

🏕️상황 위처럼 내보내기 버튼을 누르면 정상적으로 성공한 듯 보이지만... 실제로는 ZIP 파일로 저장이 되는데 문제는 압축을 해제하는 과정에서 아래와 같은 오류가 계속해서 발생한다. 🗝️해결 🧡반디집 https://kr.bandisoft.com/bandizip/ 반디집 공식 홈페이지 · ALZ, EGG, 7Z, RAR 지원 무료 압축 프로그램 반디집 (Windows) 반디집은 다양한 기능을 제공하고 빠르게 작동하는 압축 프로그램입니다. 무료로도 사용할 수 있으며, 유료 에디션은 다양한 고급 기능을 제공합니다. 주요 기능 지원 OS: Windows 7/ kr.bandisoft.com 이라는 응용 앱을 다운받아서 이 반디집을 통해 압축을 해제하면 해결~~!!

카테고리 없음 2023.08.09

[spring boot] 게시판(이미지 처리) Create, Read 기능 구현

🏕️상황 원래 게시판 쪽은 내 담당이 아니었지만 사성으로 인하여 게시판도 내가 맡게 되었다. 이번에 내가 맡으면서 글 작성만 가능했던 게시판에 이미지 기능도 추가하였다. 🗝️개발 코드 게시글 작성 코드 // BoardService public ResponseDTO create(final Board entity, final List imageList) { try { validate(entity); boardRepository.save(entity); //이미지를 뺀 나머지 컬럼 저장 imageService.upload(imageList, entity.getId()); //이미지 저장 코드 return ResponseDTO.success(boardRepository.findById(entity.getId()..

🤦🏻‍♀️고민하기 - entity 클래스_관련은 있지만 저장되지 않는 컬럼을 어떻게 처리해야 하나?

🏕️상황 Board entity의 image 컬럼 자료형이 list 형이면 DB에 저장되는 컬럼이 아니고, 다른 엔티티 클래스와의 관계를 정의하는 컬럼이다. 정석(?)의 방식이라면 Image 엔티티에서도 [private Board board] 으로 관계를 정의하는 것이 맞지만, 다른 부분에서 개발하면서 저렇게 양쪽에서 하는 방식을 해보니 굳이 Many쪽(Image) 엔티티에서는 board 컬럼이 있는 필요가 없다는 생각이 들었다. 왜냐?? 저렇게 Board 자료형을 사용하면 굳이 Image에서는 board 테이블을 조회할 필요가 없는데, Hibernate에서 board 관련 쿼리를 날리기 때문에 오히려 불필요한 쿼리를 발생시키는 느낌이 들었다. 그래서 그냥 다음과 같이 정의해버렸다. 이렇게 구성하고 im..

[spring boot] aws 백엔드 배포하기(1. jar파일로 빌드)

🏕️상황 원래는 7월에는 배포를 진행할 예정이었는데, 여차저차 미뤄지게 되었다. 그래서 한이음 팀장님이 더 이상 미뤄지면 안 될 거 같다고 얘기하기도 했고, 나의 경험 측면에서도 하루빨리 서버 배포를 해보는 것이 도움이 될 거 같다는 생각에 당장 배포를 제1의 목표로 가지게 되었다. 하지만 맨날 로컬 환경에서 기능 개발이나 해봤지.. 이쪽 aws, 서버 세계는 이번이 완전 처음이라 두려움이 앞섰다. 멘토분과 멘토링을 통해 서버 배포 진행 : - 장점 1. 내가 편하다. 2. 몰라서 헤매는 과정 없이 빠르게 배포를 할 수 있다. -단점 1. 내 실력 향상엔 내가 직접 하는 것보단 좋지 않다. 2. 그 과정을 내가 직접 하지 않았기 때문에 추후 유지/보수에 오히려 어려움이 생길 수 있다. 3. 멘토님과 진행..