도커를 설치했으니 이제 도커에 MySQL을 올리고 MySQL 워크벤치와 연동해보겠다. Docker로 MySQL 설치 & 사용자 생성1. MySQL Docker 이미지 다운로드docker pull mysql 2. 다운로드한 이미지 확인docker images 3. MySQL Docker 컨테이너 생성다음 명령어로 컨테이너를 생성한다.컨테이너 이름: --name 뒤에 컨테이너 이름을 입력한다.비밀번호: 에서 비밀번호를 입력하는데 와 > 는 입력하지 않는다.MySQL의 특정 버전을 사용하고 싶다면 버전을 입력해준다.docker run --name mysql-container -e MYSQL_ROOT_PASSWORD= -d -p 3306:3306 mysql:latest 💡 명령어 참고:--name: 생성할..
문제프로젝트에서 항상 실행할때 잘만되던게 어느 순간 빨간 불이 들어왔다. 클래스를 찾을 수 없다고 나온다. 왜 못찾을까 하다가 원인을 찾아보니이렇게 dataSource 빈 이름을 만들다 에러가 발생한다고 나온다.더보기dataSource는 애플리케이션이 DB에 연결할 때 사용하는 자원을 관리하는 인터페이스다.이것은 build.gradle에서 해결할 수 있다. 해결방안스프링부트에서 mySQL을 사용하기 위해 build.gradle에서 mysql-connector-j 또는 mysql-connector-java 이런식으로 사용한다.이때 MySQL의 버전을 명시해주지 않아서 발생하는 문제이다. 버전을 명시하지 않아서 자동으로 호환되는 버전을 가져오는데 여기서 문제가 발생한 것이다. 그렇다면 MySQL의 버전을 ..
그럼 저번에 진행했던 EC2 인스턴스 생성과 터미너스에 이어서 오늘은 EC2 우분투 서버에 Docker를 설치하겠습니다.EC2 서버에 도커를 설치하면, 애플리케이션을 컨테이너로 배포할 수 있어 빠르고 일관된 배포가 가능합니다. 자세한 Docker 관련 내용은 따로 정리하도록 하겠습니다. 먼저 저의 실행환경은 Ubuntu 24.04.1 LTS 버전입니다.Docker 설치하기1️⃣시스템 업데이트를 진행합니다. sudo apt update 2️⃣필요한 의존성 패키지 설치sudo apt install -y apt-transprot-https ca-certificates curl software-properties-common 3️⃣Docker 공식 GPG 키 추가curl -fsSL https://download..
오랜만에 다시 프로젝트를 하려고 한다. 백엔드 API는 다 만들어 놨으니 배포를 먼저 진행하고 프론트 작업도 완료해서 EC2에 올릴 예정이다. EC2 인스턴스 시작하기1. AWS EC2 페이지 접속 https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home: ap-northeast-2.console.aws.amazon.com 지역은 서울로 되어있다. 인스턴스를 시작해보자. EC2 인스턴스란 가상 컴퓨팅 환경으로 가상 머신을 생성하고 실행하는데 사용된다. 2. 인스턴스 시작1️⃣이름 및 애플리케이션을 우분투로 설정해줍니다. 2️⃣인스턴스 유형은 t2.micro로 설정해줍니다 (프리티어 이기 때문에 무료로 사용할 수 ..
문제상황ERD구조는 위와 같은 상황에서 유저들의 목록을 가져오는데 부서이름과 직급이 필요했다.데이터베이스에서는 회원 총 21명, 부서 5개, 직책 5개가 존재했다.ResponseDTO그래서 리스트 각각에는 밑과 같은 ResponseDTO정보들을 넣어주었다.@Data@Builderpublic class UserListResponseDTO { private Long id; private String name; private String email; private Role role; private String profileImage; private String departmentName; private String positionName; //DTO메서드로 재사용성을..
Error resolved [org.springframework.web.multipart.maxuploadsizeexceededexception: maximum upload size exceeded] 회원가입에서 프로필 사진을 저장하는 로직도중에 위와 같은 문제가 발생하며 이미지는 저장이 안되었다. 에러 뜻을 해석하면 업로드 할 수 있는 최대 용량을 넘긴 파일을 업로드하려 했을때 발생하는 에러였다. 용량을 설정하지 않으면 최대 용량은 1MB로 설정이 된다. Solution1️⃣ yml위 문제를 해결하기 위해 application.yml에서 최대 용량을 설정해 주었다. -SpringBoot 2.x 버전 이상부터는 밑과 같이 작성해주시면 됩니다. -Spring Boot 3.x.x 버전(필자가 진행하는 프로..
프로젝트 진행 시 이미지를 서버에 저장해야 할 경우가 많다. AWS의 S3를 이용하면 이미지를 저장하고 해당 링크를 DB에 저장하여 효율적으로 관리할 수 있다. 이를 통해 서버 용량을 절약하고, 비용 절감 효과를 얻을 수 있다. 그럼 AWS의 S3를 활용하여 이미지를 저장하고 확인해보자.1. S3 버킷 생성하기1.버킷 생성하기AWS > S3 > 버킷 > 버킷만들기 클릭또는 밑의 주소로 접속합니다.https://ap-northeast-2.console.aws.amazon.com/s3/bucket/create?region=ap-northeast-2# 2. 버킷 생성버킷을 생성하기 위해 이름을 만들어 줍니다.버킷은 디렉토리/폴더 개념으로 이해하시면 됩니다. 그리고 버킷의 퍼블릭 엑세스 차단을 해제해줍니다. 3..
이번 시간은 Kakao 로그인이다.🤔 왜 OAUTH2를 진행했나?OAUTH2를 사용하는 또다른 중요한 이유는 회원에 대한 중요한 개인정보(ex. 계정과 계정에 대한 비밀번호, 기타 개인정보)를 내 DB에 저장하지 않음으로써 혹시라도 노출될 사고를 줄일 수 있다는 점때문에 사용하였다. 결론적으로 사용자와 개발자 모두에게 편의성과 보안성을 제공할 수 있기 때문에 진행하게 되었다. 📌 Spring Security 동작 원리모든 책임을 백엔드가 맡음필자는 소셜 로그인을 백엔드로만 진행했다. 보통 백엔드와 프론트엔드를 섞어서 프론트에서 코드를 받거나 토큰을 발급받는 경우가 있는데 카카오와 같은 대형 서비스 개발 포럼 및 보안 규격에서는 책임을 나누어 받는 것을 지양한다. 따라서 모든 책임을 프론트에서 맡거나..
프로젝트를 진행하며 일반 로그인 과정에서 Spring Security와 JWT(Json Web Token)를 활용하여 로그인 기능을 구현하였다. Spring Security를 사용한 이유와 동작과정을 알아보고 구현해 보자. OAUTH2를 활용한 소셜로그인은 다음장에서 알아보자.🤔 왜 Spring Security를 사용했나?강력한 인증 및 권한 부여 기능중앙에서 보안 설정 관리확장성과 커스터마이징먼저 스프링 시큐리티는 인증(Authentication)과 권한 부여(Authrization)를 손쉽게 구현할 수 있는 안전한 프레임워크이고 추후에 진행할 OAuth2(소셜 로그인)을 지원하고, 보안 설정을 중앙에서 처리할 수 있게 도와준다. 이를 통해서 보안 정책을 일관되게 적용하고 유지할 수 있으며, 다양한 ..
스프링 부트 프로젝트에서 Entity를 만들며 항상 밑과 같은 방식으로 Entity마다 생성날짜와 수정날짜를 관리했었다.매번 이렇게 따로 생성일과 수정일을 저장해야 하나 고민하다가 이러한 공통 속성을 묶어주는 BaseEntity를 발견했다.바로 한 번 살펴보자. 먼저 build.gradle에서 의존성을 추가해주자. 그 이후 메인 애플리케이션에 @EnableJpaAuditing을 추가하자.JPA AuditingAuditing 뜻은 감시한다는 뜻으로 JPA를 감시한다는 의미이다. 즉 JPA Auditing은 JPA를 감시하며 엔티티와 관련된 이벤트를 추적하고 기록한다. 이것을 사용한다면 엔티티의 생성일과 수정일을 자동으로 관리하는 기능을 제공하여 개발자가 수동으로 관리하지 않아도 되는 장점이 있다. 그다음..