spring boot 사이드 프로젝트[4] : 도메인 엔티티, DTO 설계 및 특별한 패키지 구조

데이터베이스를 설계하기 위해 E-R다이어그램을 기반한 도메인 설계를 시작했다. 보통 스프링 부트 프로젝트들을 보면 service , controller, repository 이렇게 패키지를 나눠서 진행하는 경우가 많은데, 우리는 조금 다른 방식으로 진행했다. domain에 속하는 user, comment, post, profile을 먼저 만들고, 그 안에 controller, service , repository등을 만드는 것이다. 이 패턴의 장점은 각 엔티티와 연관된 레이어를 찾는 것이 굉장히 쉽다는 점이다. 단점은 필요 이상으로 패키지 개수가 늘어날 수 있다는 점인데, 나는 이 패턴을 통해 파일을 찾는 것이 더 유용하다 판단해서 이 방법을 선택했다. 도메인은 크게 User, profile, post,..

9uin 2023.05.22 0

spring boot 사이드 프로젝트[5] : service, repository 초기 작성

데이터베이스를 entity를 이용해 다루는 레이어 repository, 그리고 이 repository를 이용해 비즈니스 로직을 구현하는 service레이어의 초기 작성을 한다. user의 repository, service를 작성하기 위해 user도메인 안에 repository, service 패키를 만들어 그 밑에 클래스 파일을 생성한다. Repository 작성 repository는 이렇게 jpaRepository를 상속받은 인터페이스로 생성한다. 이렇게 인터페이스로 만들어도 service에서 의존성 주입을 통해 사용이 가능한 건 spring data jpa가 이 인터페이스를 기반한 구현체를 실행 시 생성해서 프록시 객체로 주입해주는 것 때문이다. 구현체에는 jpaRepository 에 정의되어있는 ..

9uin 2023.05.23 0

spring boot 사이드 프로젝트 : spring boot + github action을 통해 CI/CD구축

ci/cd란 continuous integration / continuout deploy(delivery) 의 줄임말로, 지속적 통합과 배포를 말한다. 스프링 예제를 하나라도 해보면 알겠지만 서버 코드를 업데이트 했다고 실행중인 애플리케이션에 바로 적용되지는 않고, 서버를 껐다 켜야 업데이트한 코드가 적용된다. 개발서버와 배포 서버를 따로 둔 상황에서 업데이트 내용을 적용하려면 배포 서버에 직접 접속해서 git pull이나 docker pull같은 작업을 거친뒤 다시 서버를 껐다 켜야되는데 서버가 한 두대면 모를까 여러대면 이런건 고역이 따로 없다. ci/cd를 통해 이런 작업을 할 필요 없이, 트리거만 충족되면 배포 서버에도 업데이트한 내용이 바로 적용되고, 다시 배포를 알아서 시작해준다. 프로젝트 마..

9uin 2023.10.29 0

spring boot 사이드 프로젝트[3] : 개발 환경 설정

다른 팀원과 협업을 위해 개발 환경을 통일할 필요가 있었다. 깃허브에 커밋메시지에 버전 정보를 명시해 헷갈리지 않도록 했다. spring boot 환경 build tool : gradle java : 17 spring boot : 3.0.6 packaging : jar 스프링 부트 프로젝트 생성 시 설정한 것은 이렇다. 사용할 DB는 마리아DB를 사용하기로 했다. 추후 테스트를 위해 h2를 고려할 수 도 있을 것 같다. 사용할 IDE는 인텔리제이를 선택했다. spring boot 개발에 유용한 다양한 도구들을 제공한다. gradle을 빌드 관리 툴로 골랐다면 build.gradle파일을 통해 의존성이나 설정들을 관리하게 된다. 기본적으로 마리아DB를 선택했기에 이것부터 먼저 연동했다. dependenci..

9uin 2023.05.22 0

spring boot 사이드 프로젝트 : 테스트 시나리오를 세우고 jmeter를 통해 부하 테스트 해보기

프로젝트를 배포, 운영해보면서 내 프로젝트에 어디서 병목 현상이 발생하는지, 트래픽은 어느 정도까지 감당할 수 있는지 확인이 필요한 경우를 공부한 과정입니다. 테스트하는 프로젝트는 sns 사이드 프로젝트로, 간단히 포스팅을 쓰고, 댓글 및 좋아요가 가능한 기본적인 커뮤니티입니다. 테스트는 다음과 같이 시나리오를 설정하고, 진행했습니다. 테스트 시나리오 구성 근거 실제로 클라우드에 배포하는 건 돈 때문에ㅜㅜ 제 컴퓨터 스펙의 서버를 기준으로 잡고 일단 테스트 기준을 세웠습니다. 1. 서버 스펙 제 컴퓨터 스펙은 다음과 같습니다. cpu : AMD Ryzen 5 3500X 6-Core Processor 3.59 GHz (6코어 입니다.)메모리 : 16GBdisk : sdd 500GB 2. ..

개인 프로젝트 2025.02.20 0