해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1. 현업에서는 "이미지 파일"과 "JSON 데이터"를 클라이언트로 부터 전달받아 POST 해야하는 요구사항이 있는 경우, 어떤식으로 구현하시나요? 한번의 request로 두 형식의 data를 받아서 처리하시는지, 아니면 분리하는것이 더 나을지 고민이 됩니다.Spring boot application에서 파일과 여러 정보가 담긴 json 데이터를 하나의 api로 전달받아서 파일의 S3업로드 후 업도르 파일의 url을 여타 정보들과 함께 담아 하나의 entity에 저장하려했습니다. frontend에서 content-type을 multipart/formdata로 명시하고 파일을 담아서 보내줬으며, spri..
해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1. ec2인스턴스의 메모리 부족 관련해서, spring 어플리케이션의 가용 메모리에 제한을 걸어주거나 connection 생성에 제한을 두는 방법이 있을까요?제 개인 포트폴리오를 위한 aws 인스턴스에서 스케일 관련 이슈가 있어 질문드립니다. 현재 aws 프리티어 ec2서버인 t2.micro에 docker-compose를 이용해 spring application 3개와 nginx를 띄워 리버스 프록싱을 적용함으로써 운영중입니다.어플리케이션을 띄울때에는 조금 느리다는 부분 말고는 정상적으로 구동이 되는데, 이틀간격으로 어플리케이션이 다운되는 현상을 마주했습니다.해당 부분 관련해서 파악을 해보니, 스프링..
[작성중]0. 상황 - 새로 참여하게 된 프로젝트가 arm을 지원하지 않는 python 버전(3.7.9)을 사용하고 있었다. - 하지만 나의 노트북은 M1(arm)... 어쩌지! ( 관련된 나의 python 관련 삽질 일기는 여기! 에서 볼 수 있다 ...;- - 팀 리드분이 "rosetta" 를 이용해 intel 기반으로 환경 설정을 맞출것을 요청하셔서, iterm을 복제해 rosetta 전용 터미널로 적용하고 brew나 pyenv처럼 자주 사용할 명령어에 대해서는 alias를 적용해 사용하기러 결정했다. + 각 아키텍쳐별 터미널을 켤때 해당 아키텍쳐별 PATH로 알아서 변경해준다면..?1. rosetta가 적용된 iterm2를 만든다!1. finder 에서..
0. 상황 - rosetta 전용 iterm shell 을 생성하고, 관련 alias를 생성하던 중.. 잘못된 명령어를 입력해 .zsh 파일이.. 덮어씌워졌다.1. 울지 말고 말해봐 좌절하던 내게 코코가 보내온 한마디....... 그래...! 나는...! 내게 카오스 엔지니어링을 하는 중인거야!2. 원인 - 원인은.. alias를 생성하다가.. 정말..무심결에...입력한.. 단...한줄의... 스크립트에서 시작된다..!! 주의 !! 아래 스크립트는 절대 따라 입력하지 마시오..!!alias rpyenv="arch -x86_64 /usr/local/bin/pyenv" -> .zshrc 그렇다.. >>를.... 정신을 놓은채로 ->로 입력하고 말았다...원래 입력했어야할 스크립트는.. 아래..
0. 상황 - AWS ELB 중 ALB에 nstance-target-group을 변경하던 중, 새로 추가한 인스턴스의 상태가 "Unused"에서 변경되지 않으며, target is in an availability zone that is not enabled for the load balancer가 발생. 1. 에러코드 전문 - "Unused", target is in an availability zone that is not enabled for the load balancer 2. 원인 - 기존에 ELB의 서브넷 그룹관련 test를 하면서 서브넷 그룹을 일부 제외시켰는데, 새로 생성한 인스턴스가 제거된 서브넷 그룹중 하나에 생성이 되면서 발생된 문제이다 3. 해결방안 - load balancer의 작..
💡 JPA Lazy Loding관련 오류인줄 알았으나, Dto 적용시 Response에 @Getter를 생성해주지 않아 발생한 문제였다. 에러코드 "Internal error - Type definition error: [simple type, class wanted.preonboarding.backend.post.dto.PostResponse] \n cause : com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class wanted.preonboarding.backend.post.dto.PostResponse and no properties discovered to create BeanSeria..
💡 Private key의 Permission이 너무 공개되어있기 때문에 발생한 이슈 에러 코드 McBookPro ~ % ssh -i "[pem 키 위치/파일명].pem" [계정]@[aws 퍼블릭 IPv4 DNS 주소] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '[pem 키 위치/파일명].pem' are too open. It is required that your private key files are NOT acces..
💡 RDS 포트를 보안 관련 이슈로 변경하였지만, yml에 변경된 포트를 반영해주지 않았기 때문에 발생한 이슈 에러 코드 2023-05-30 06:27:29.225 ERROR 58789 --- [nio-8021-exec-1] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received a..
💡 NAT 환경에서 공인 IP주소를 입력해주지 않았기 때문에 발생한 이슈. 에러 코드 DBMS: MySQL(버전 8.0.28) 대/소문자 구분: 일반=exact, 구분자 추가=exact 드라이버: MySQL Connector/J(버전 mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0), JDBC4.2) Operation timed out. 핵심 요점 와이파이 등 NAT을 이용할 시 공인 IP가 아닌 사설 IP를 AWS 보안그룹 인바운드 규칙에 추가할 시 계속해서 접근이 차단된다. 해결 방안 공인 IP를 인바운드 규칙에 추가한다 ipconfig가 아닌 네이버의 내 ip 찾기 이용 터미널에서 curl [ifconfi..
package org.springframework.jdbc.datasource does not exist 💡 프로젝트 생성시 JDBC dependency를 implementation 하지 않았기 때문에 발생한 이슈 에러 코드 java : package org.springframework.jdbc.datasource does not exist 핵심 요점 JDBC dependency를 gradle.build에 추가해준다. 해결 방안 JDBC dependency를 gradle.build에 추가해준다. implementation 'org.springframework.boot:spring-boot-starter-jdbc'
Gmail SMTP "AuthenticationFailedException: 535-5.7.8 Username and Password not accepted" 💡 Google에서 2022년 5월 이후 Google 계정에 대한 “보안 수준이 맞은 앱 엑세스”를 허용하지 않기 때문에 발생한 이슈 에러 코드 핵심 요점 메일 발송을 위한 g-mail계정의 보안탭에서 2단계 인증을 실행한 후, 앱 비밀번호를 생성하고 해당 비밀번호를 기존에 입력해두었던 비밀번호와 교체하면 해결됨 (https://support.google.com/a/answer/3726730?hl=ko) 해결 방안 //application.yml mail: host: smtp.gmail.com port: 587 username: [g-mail아이디..
method replaceAll in class String cannot be applied to given types; return my_string.replaceAll(letter); 💡 JAVA에서 String의 replace, replaceAll 함수의 경우, 매개변수로 ([String] 탐색할 요소, [String] 치환할 요소)를 주어줘야 하는데, 치환할 요소를 주지 않았기 때문에 발생한 이슈 에러 코드 /Solution.java:3: error: method replaceAll in class String cannot be applied to given types; return my_string.replaceAll(letter); ^ required: String,String found: S..