오늘은 코드카타 SQL 73번 문제를 풀고, Spring 플러스 프로젝트의 Lv.3-3을 진행했다.
오늘은 1개의 SQL 문제를 풀었는데, 오늘도 새로운 개념을 배웠다.
바로 변수를 설정해 사용할 수 있는 set이다.
set @변수명 := 값과 같이 사용하면, 변수를 통해 내가 필요한 값을 할당할 수 있고, 조회 시에는 @변수명 := 대입값과 같은 형식으로 사용할 수 있다.
오늘 풀었던 문제에서는 시간대별 합계를 구하는 것을 요구했는데, 0부터 23까지의 시간을 set을 통해 설정했고, 서브쿼리를 통해 각 시간대의 count를 구하였다.
사실 어떻게 접근해야 할지 감이 잡히지 않아서 구글링을 하던 중에 문제의 풀이를 발견해버렸다.
이번에는 어쩔 수 없이 컨닝을 해버렸지만.. 다음에 비슷한 형식의 문제가 나온다면 잘 해결해봐야겠다.
오늘 알고리즘 문제도 풀었는데, 계속 2개의 테스트 케이스에서 통과하지 못하고 있다.
도대체 왜 통과를 못하는 것인지.. 내일까지 더 찾아봐야겠다.
오늘 푼 문제와 풀이는 깃허브를 통해 업로드해두었다.
GitHub 보러가기
오늘은 Lv.3-3의 AWS EC2, RDS 연결을 마치고, S3에 프로필 이미지 업로드 및 관리 기능을 구현했다.
어제 EC2에서 스프링이 실행되지 않았던 원인은 .env 파일과 함께 실행하지 않았기 때문이었다.
그래서 도커 명령어의 옵션으로 env 파일과 함께 실행하니 정상적으로 잘 동작이 되었다.
그런데, 이후에 EC2와 아무리 해도 연결이 안 되길래 왜 이런건지 한참을 찾아봤다.
아무리 찾아봐도 답이 나와 같은 상황인 사람이 나오지 않아서 그냥 다시 내 환경들을 살펴봤다.
그런데.. 내가 그냥 방화벽을 안 열어놨더라..
탄력적 IP까지만 연결해두고, 인바운드 규칙 편집을 하나도 안했다..
그러니 당연히 연결이 안되지...
그래서 HTTP를 위한 80포트와 어플리케이션 실행을 위한 8080포트를 열어주었고, 그랬더니 아주 정상적으로 잘 동작되었다.
원래 목표는 S3를 통한 이미지 업로드와 관리까지 모두 끝내는 것이었다.
그런데.. 생각과는 다르게 S3를 사용하는 것이 매우 매우 어렵더라..
일단, AWS SDK를 통해 스프링과 S3를 연결해야 하는데, 여기에 v1과 v2가 있다.
내가 참고한 자료들이 v1을 사용하고 있었는데, v1은 2025년 12월 31일에 운영이 끝난다더라.
사실 이번 과제 마감이 12월 30일이길래 고민했지만.. 그래도 계속 깃에 올려두긴 할거니까 v2의 자료들을 다시 찾기로 했다.
최신 자료들을 찾아가며 S3 Config, S3 Service 파일들을 생성하고, 어찌저찌 S3와 연결해서 파일이 업로드 되는 것까지는 확인했다.
그런데, 스프링에서 S3로 파일을 업로드하는 방법에는 4가지가 있는데, 나는 그 중에서도 서버에 부하가 가장 심한 방식을 사용했던 것이었다.
지금 방식으로도 작동은 충분히 잘 되지만.. 발제 문서에도 Presigned URL을 적용해보라는 이야기가 있길래 이걸로 다시 구현해보려고 한다.
EC2와 RDS를 연결하는 것은 그냥 도커 이미지를 만들어서 실행하고, DB 연결만 바꾸면 되었다.
그래서 매우 간단하게(사실 이런저런 오류 많이 남) 해결할 수 있었다.
하지만, S3와 연결하는 것은 정말 처음 해보는 것이었기에 중간 중간 오류들을 해결해가며 진행해야 했다.
그리고 일단 인터넷 자료들을 찾는 데에 엄청나게 많은 시간을 쏟았다.
계속 인터넷 자료들을 베끼는 수준밖에 안 되는 것 같지만.. 최대한 이 내용들을 이해하며 구현하기 위해 노력해야겠다.
내가 작성한 코드는 깃허브에 업로드해두었다.
GitHub 보러가기
뭔가 오늘은 하루종일 인터넷 자료만 찾아보고, 인터넷이 있는 내용들 긁어다가 내 환경에 맞게만 수정하고, 이런 식이었다.
그래서 하다보니 이게 맞나 싶은 순간들이 많았다.
근데 또 한편으로는 나는 처음 하는데 뭐 어쩌겠어 하는 마음도 있다.
인터넷 자료들을 찾아보되.. 그냥 사용하지 말고 왜 이렇게 작성해야 하는지 찾아보면서 사용해야겠다.