Back-end 6

[Spring boot + MongoDB + MySQL] DB 2개 연동하기

Springboot에 Mysql과 MongoDB 연결하기 1. 연결이유 프로젝트 중, RDBMS로 기본적인 것들은 다 구현해 놨는데, 서비스 배포시 사용자들의 로깅이나 결제 데이터가 쌓이면 Document기반인 관리하기 더 편한 NoSQL로 넣는게 좋을것 같다는 생각이 들었다 따라서 구조는 Springboot에 Mysql과 MongoDB둘다 연결되어 있는 구조이다 이번 글에서는 MongoDB에 AOP로 사용자 접근 로그를 저장하도록 하겠다 Collection이름은 user_history이다 2. 코드 1) build.gradle 수정 가장 아랫줄 코드가 mongodb를 추가한 부분이다 2) User History Entity 수정 //@Entity @Document(collection="user_hist..

Back-end/Spring 2022.07.26

[AWS] EC2 볼륨 확장

EC2 disk 용량 문제 프로젝트를 진행하면서 수정한 코드를 배포하기위해 파일을 직접 Filezilla로 옮겼는데, 용량문제로 필요한 파일들이 일부 들어가지지 않는 문제를 맞닥뜨렸다. EC2 볼륨 확장 과정 1. 해당 볼륨 탭에 들어가서 늘리려고 하는 인스턴스를 우클릭하여 볼륨을 수정해준다. 2. 확장하는데 시간이 10분이상 소요되니 기다린다. 3. Putty에 접속하여 직접 파일 시스템을 늘려준다. 4. 최적화가 완료된 뒤 다음과 같은 명령어를 입력해준다. df -h #현재 용량 상태 확인 lsblk #어떤 파티션을 조절해야하는지 파티션 상태 확인 sudo growpart /dev/xvda 1 #파티션 크기조정 (공백은 번호구분 용도) lsblk #다시 용량 변화확인 sudo resize2fs /de..

Back-end/Aws 2021.07.29

[AWS] aws에 spring-boot 배포하기

Springboot Jar 파일 배포 aws t2.micro에 구현한 프로젝트를 jar파일로 배포해 보자 . 이때 nginx로 로드밸런싱도 도전했다. aws 배포 방법 먼저, t2.micro 인스턴스를 하나 만들어 둔 상태이다. Gradle로 jar 파일 생성 및 putty에 전송 1. IntelliJ에서 bootJar을 통해서 jar 파일을 만들어준다 2. Putty로 ec2에 접속한다. 3. git clone으로 프로젝트를 다운받는다. 4. jar파일이나 war파일은 업로드하면 안되기 때문에 Filezila를 통해서 받아야한다. jar 파일 실행 1. gradlew가 없어서 만들고 다시 github에 업로드한다. gradle init #gradle초기화 진행 gradle wrapper 2. 깃클론 및..

Back-end/Aws 2021.07.28

[JPA] jpa 2일차

JPA Day-2 진도 [생성 api ~ 조회 api] api 개발시 entity를 외부에 노출하거나, 파라미터로 받으면 안된다. entity를 그대로 사용하면 중간에 변동성 때문에 api 호출시 깨질 수 있다. DTO를 파라미터로 사용하여 받는다. 수정 api 개발시 command와 query를 분리하여 개발할 때 유지보수성이 증가한다. entity를 직접 반환하면 안된다 @JsonIgnore annotation을 사용하면 반환 시 없는 경우 나타나지 않는다. 다만 해당 어노테이션을 사용하는 것이 모든 케이스를 막기는 어렵다 DTO를 사용하여 반환해야한다. public Result membersV2() { List findMembers = memberService.findMembers(); //엔티티 ..

Back-end/Spring 2021.07.27

[JPA] jpa 1일차

JPA Day-1 진도 [생성 api ~ 조회 api] api 개발시 entity를 외부에 노출하거나, 파라미터로 받으면 안된다. entity를 그대로 사용하면 중간에 변동성 때문에 api 호출시 깨질 수 있다. DTO를 파라미터로 사용하여 받는다. 수정 api 개발시 command와 query를 분리하여 개발할 때 유지보수성이 증가한다. entity를 직접 반환하면 안된다 @JsonIgnore annotation을 사용하면 반환 시 없는 경우 나타나지 않는다. 다만 해당 어노테이션을 사용하는 것이 모든 케이스를 막기는 어렵다 DTO를 사용하여 반환해야한다. public Result membersV2() { List findMembers = memberService.findMembers(); //엔티티 ..

Back-end/Spring 2021.07.27

[SQL] GROUP BY 한 결과로 UPDATE 하는 법

기존 서비스 운영 중 DB를 업데이트 해야할 때 서비스 진행중에 새로운 서비스를 도입해서 기존의 사용자에게도 적용해야할 때, 조건을 걸고 일괄 수정이 필요할 때가 있다. 이번의 경우에는 id로 group by절을 사용하여 나온 결과의 수를 세고 그 결과대로 컬럼 두개를 업데이트 시켜야 했다 1. UPDATE가 필요한 조건의 대상자 찾기 user의 id로 그룹화 하여 해당 유저가 작성한 글의 수를 센다 select count(*) as CNT, user_id from feedlist group by user_id having CNT>=7; # Feedlist라는 테이블에서 user_id로 그룹화 하고 반환되는 튜플의 수를 세는데, 7개 이상일 때만 나오도록 한다. group에 대한 조건을 세기 위해서는 w..

Back-end/SQL 2021.07.27