Java153 여러 외부 API 동기적으로 호출할 때 발생할 수 있는 문제 모든 코드는 깃허브에 있습니다.여러 외부 API 동기적으로 호출할 때 발생할 수 있는 문제최근 흥미로운 문제를 고민하게 되었어요.여러 외부 API를 동기적으로 호출할 때 성능 이슈가 발생하진 않을까?예를 들면, 음식 배달 앱에서 사용자 요청을 처리할 때 외부 API 호출이 지연된다면 사용자가 느끼는 대기 시간이 길어질 수 있는데요.이러한 상황에서 효율적인 API 호출 방법을 고민해볼 필요가 있을 것 같아요. 이에 대해 고민했던 내용을 정리해보았습니다. 동기적(Synchronous)으로 여러 외부 API 호출HTTP 요청을 위해서 사용했던 라이브러리는 spring-boot-starter-web 모듈에서 제공하는 Rest Template 이었어요.간단하게 예제 코드를 살펴볼게요.// FoodService... 2024. 11. 26. 빈번하게 변경되지 않는 게시글 카테고리를 Enum으로 관리 NOW 프로젝트를 진행하면서 기록한 글입니다. 게시글의 카테고리를 DB에서 관리하다 하나의 게시글을 DB에 저장한다고 하면, 해당 글이 공지 글인지, 커뮤니티 글인지, 사진 글인지, 문의 글인지 구분해야합니다. 게시글 테이블의 카테고리 컬럼을 추가해서 해결할 수도 있겠지만, 게시글 카테고리에 한정하지 않고, 서비스 내에서 사용할 카테고리성 데이터에도 사용할 수 있도록 테이블을 설계해야 한다고 생각했습니다. 다음과 같은 용도로요. 출처: 우아한기술블로그(https://techblog.woowahan.com/2527/) 따라서, 현재 초기 프로젝트의 테이블 구조입니다. 게시글 카테고리에 사용할 데이터를 코드 그룹(tb_code_group)과 하위 코드 테이블(tb_sub_code)에서 다음과 같이 관리했습니.. 2023. 7. 18. enum 활용을 통한 파일(File) 도메인 관련 리팩토링 NOW 프로젝트를 진행하면서 기록한 글입니다. 이전 포스팅 게시글(POST) 도메인 모델링(Domain Modeling) 파일(File) 도메인 모델링(Domain Modeling) 이전 파일 도메인 모델링에서.. 원시값 포장(Wrapping) 객체를 사용하여 파일 이름, 파일 크기, 파일 확장자와 같은 필드에 대한 유효성 검증 로직을 캡슐화했습니다. 이번 포스팅에서는 파일 도메인 객체를 어떻게 사용하고 있는지와, ENUM을 활용한 리팩토링 사례에 대해서 소개해 드리고자 합니다. 본격적인 설명에 들어가기에 앞서, 현재 진행중인 NOW 프로젝트에 대해서 간략하게 소개해 드리겠습니다. 스프링 부트 버전: 2.6.3 자바 버전: 11 토큰(JWT) 기반 인증 방식 파일 업로드를 위한 MultipartFile .. 2023. 7. 11. 파일(File) 도메인 객체 설계와 테스트 코드 작성 NOW 프로젝트를 진행하면서 기록한 글입니다. 파일(File) 도메인 객체 설계와 테스트 코드 작성 지난번 포스팅에서는 게시글(POST) 도메인 모델링(Domain Modeling)을 진행했었습니다. 해당 글은 이전에 구현하지 못했던 커뮤니티(Community), 사진(Photo) 게시글의 파일 업로드와 관련된 요구사항을 기반으로 도메인 모델링을 진행하고자 합니다. 지난 번 포스팅에서 작성했던 내용입니다. 표시한 부분을 제외한 모든 내용은 지난 번 포스팅에서 어떻게 모델링했는지 설명드렸습니다. 이번 포스팅은 표시한 파일 업로드에 대해서 도메인 객체를 설계하고, 테스트 코드 작성을 하는 것까지의 과정을 소개해드리고자 합니다. 도메인 모델링 파일 업로드와 관련된 요구사항 중 허용하는 확장자, 최대 파일 크기.. 2023. 7. 11. 게시글(POST) 도메인 객체 설계와 테스트 코드 작성을 통한 리팩토링 NOW 프로젝트를 진행하면서 기록한 글입니다. 도메인(Domain) 객체 설계 게시글(POST) 도메인 모델링(Domain Modeling) 다음과 같은 요구사항이 주어졌습니다. 게시글은 크게 4가지 종류로 나눕니다. 공지사항(Notice) 관리자(Manager)만 작성 핀 설정(상단 고정 여부) 수정 및 삭제 수정 가능 댓글이 있는 경우 삭제 불가능 커뮤니티(Community) 사용자(User)만 작성 파일 업로드 확장자 jpg, gif, png, zip만 허용 크기는 2MB 까지만 허용 개수는 최대 5개까지 수정 및 삭제 수정 가능 댓글이 있는 경우 삭제 불가능 사진(Photo) 사용자(User)만 작성 파일 업로드 확장자는 jpg, gif, png만 허용 크기는 1MB 까지만 허용 개수는 최대 20.. 2023. 7. 5. 테스트 코드 작성을 위한 의존 관계 주입(DI) 해당 글은 jsp/servlet 개발 환경에 해결했던 내용입니다. 테스트 코드 작성을 위한 의존 관계 주입(DI)을 고려해야할 상황 BoardService는 게시글 번호에 해당하는 게시글을 가져오기 위해서 BoardDAO, CommentDAO, FileDAO에게 데이터 베이스 접근 로직을 위임하고 있습니다. 작성된 코드는 아래와 같습니다. public BoardDTO findBoard(Long boardIdx) { BoardDTO boardDTO = boardDAO.findById(boardIdx); if( boardDTO == null ) { throw new NoSuchElementException("해당 글을 찾을 수 없습니다."); } boardDAO.increaseHitCount(boardIdx.. 2023. 6. 5. 이전 1 2 3 4 ··· 26 다음