본문 바로가기

프로젝트 일지

(18)
#18. Docker 적용하기 #. Docker 사용해보기. [개발했던 도서 관리 API 프로젝트에 Docker를 적용해보자] [개요] Docker는 Application에 포함된 라이브러리들을 독립된 개체인 이미지로 변경하고, 그 이미지들을 기반으로 컨테이너를 생성하여 Application과 관련된 라이브러리를 독립적인 실행 환경을 갖은채로 관리하는 플랫폼이다. libraryAPI의 예제를 사용할 경우, Docker에서 컨테이너화된 Java Application과 컨테이너화 된 MySQL이 서로 통신을 해야한다. [큰 흐름] 1. MySQL 이미지 생성 -> 컨테이너 생성 2. LibraryAPI 이미지 생성 -> 컨테이너 생성 3. LibraryAPI 컨테이너와 MySQL 컨테이너 통신하여 서버 가동 4. Docker Hub Re..
#17. JMeter 활용하여 서버 과부하 관리 해당 프로젝트에서 현재 DB의 데이터 호출에 활용되는 ORM, 프레임워크는 아래와 같다. 1. Spring Data JPA 2. JPA - JPQL 3. QueryDsl 위의 3가지 방법은 모두 데이터 호출 속도와는 무관하게 데이터 호출하는 방식을 결정짓는 요인이다. Spring Data JPA = 메서드 네이밍 컨벤션에 맞추어 자동 생성 메서드를 쓰느냐 List findByMember_MemberIdAndReturnedAtIsNullAndBook_BookPublisher (Long memberId, String bookPublisher); JPA-JPQL = SQL을 직접 작성하느냐 @Query("SELECT mb FROM MemberBook mb WHERE mb.member.id =:memberId ..
#16. QueryDsl 적용 애플리케이션을 구현하다보면 사용자의 요구사항에 맞추어 DB에서 조건에 맞는 데이터를 가져오는 ORM은 여러가지가 있다. 내가 사용했던 대표적인 ORM에는 2가지가 있다. 1. JPA - Spring Data JPA 2. JPA - JPQL 하지만 위의 두가지 기술에는 데이터를 가져오는 조건을 모두 포함시키는 메서드 이름 컨벤션을 작성해서 사용하든, 직접 쿼리문으로 해당 조건들을 모두 기입하든, 개발자가 필터링 조건들을 모두 사전에 셋팅을 해야한다는 단점이 있다. 내가 진행했던 사이드 프로젝트에는 다음과 같은 요구사항이 있었다. A. 도서 제목 검색 B. 도서관 이름 검색 C. 도서관에 보관중인 도서 검색 D. 도서관에 등록된 회원 검색 E. 특정 태그를 가진 도서 검색 F. 연체 기록이 있는 회원 검색 ..
#15. Spring RestDocs - GitPage Hosting JUnit 통과를 통해 생성된 문서 snippets을 사용하여 index.adoc 파일을 작성한 이후, 프로젝트 Build 를 통해 생성된 index.html을 외부에서도 확인할 수 있도록 GitPage를 통해 호스팅 하는 법을 정리하고자 한다. [ GitPage Hosting 하는 법 ] #1. Repository와 연동된 디렉토리의 root 경로로 이동하여 docs 폴더를 생성한다. #2. 기존 설정대로라면 index.adoc 작성 완료 이후 프로젝트의 build를 성공적으로 마치게되면main/resources/static/docs 경로에 index.html 파일이 생성되어 있다. 이 index.html 파일을 루트 경로에 생성한 docs 폴더로 이동시킨다. #3. GitHub 사이트 이동하여 프로젝..
#14. 싱글 프로젝트 일지 - JUnit test : Library 도메인 [JUnit Test의 목적] 대상 메서드의 예상되는 결과 데이터인 Dto.ResponseDto 객체의 필드 값들과, 대상 메서드로 mock HTTP 요청의 실제 응답 데이터 (ResultActions) 의 필드 값이 일치하는지 검증 Dto.ResponseDto = ResultActions ? JUnit Passed : JUnit no Passed [JUnit Test 메서드 작성 순서] 1. 대상 메서드의 본연의 기능이 잘 되는지 확인이 주목적. 2. 대상 메서드에서 사용된 모든 객체의 메서드를 사용한다. 3. 설정해둔 예외 발생 조건은 모두 발생하지 않는다는 가정을 전제로 한다. [JUnit Test 메서드 로직 구성] 1. getMembersTest() 목적 : 도서관에 등록된 전체 회원 조회 - ..
#13. 싱글 프로젝트 일지 - JUnit test : Book 도메인 [JUnit Test의 목적] 대상 메서드의 예상되는 결과 데이터인 Dto.ResponseDto 객체의 필드 값들과, 대상 메서드로 mock HTTP 요청의 실제 응답 데이터 (ResultActions) 의 필드 값이 일치하는지 검증 Dto.ResponseDto = ResultActions ? JUnit Passed : JUnit no Passed [JUnit Test 메서드 작성 순서] 1. 대상 메서드의 본연의 기능이 잘 되는지 확인이 주목적. 2. 대상 메서드에서 사용된 모든 객체의 메서드를 사용한다. 3. 설정해둔 예외 발생 조건은 모두 발생하지 않는다는 가정을 전제로 한다. [JUnit Test 메서드 로직 구성] 1. postBookRentalTest() 목적 : 도서 대여 요청이 잘 되는지 ..
#12. 싱글 프로젝트 일지 - JUnit test : Member 도메인 [JUnit Test의 목적] 대상 메서드의 예상되는 결과 데이터인 Dto.ResponseDto 객체의 필드 값들과, 대상 메서드로 mock HTTP 요청의 실제 응답 데이터 (ResultActions) 의 필드 값이 일치하는지 검증 Dto.ResponseDto = ResultActions ? JUnit Passed : JUnit no Passed [JUnit Test 메서드 작성 순서] 1. 대상 메서드의 본연의 기능이 잘 되는지 확인이 주목적. 2. 대상 메서드에서 사용된 모든 객체의 메서드를 사용한다. 3. 설정해둔 예외 발생 조건은 모두 발생하지 않는다는 가정을 전제로 한다. [JUnit Test 메서드 로직 구성] 1. postMemberTest() 목적 : 회원 등록이 잘 되는지. - 로직 구..
#11. Rest Docs & JUnit 테스트 기초 설정 [목표] API 명세서의 생성을 Postman 과 같은 Client Tool을 사용하여 수동으로 작성하는 것이 아닌, Spring Rest Docs [테스트 코드 기반의 API 문서화 방식] - JUnit Test를 통해 자동 생성을 하고자 한다. [Spring RestDocs] 정확하고 읽기 쉬운 RESTful 서비스에 대한 문서를 생성하는 라이브러리이며, 실제 테스트를 통해 문서의 snippets 을 생성하여 문서가 코드와 함께 항상 최신 상태가 되도록 보장한다. API 문서는 MockMvc, document() 메서드를 사용해야 생성된다. [순서] 1. src/docs/asciidoc 디렉토리 생성. 2. index.adoc 파일 생성. 3. src/main/resources/static/docs ..