개발환경💡 전체 코드는 Github를 참조해주세요.spring boot 3.3.1JDK 17IntroSpring MVC에서는 MultipartFile 이라는 인터페이스를 통해 파일 업로드 기능을 제공하고 있습니다. ZIP, UnZIP 기능을 제공하는 유틸성 클래스를 함께 개발해보고, MultipartFile을 함께 사용하여 파일 업로드, 그리고 HttpServletResponse를 통해 파일을 클라이언트에게 스트림을 통해 내려줘서 다운로드할 수 있는 API를 개발 및 테스트 하는 방법에 대해서 배워보도록 하겠습니다.먼저 Multipartfile이 뭘까요?보통 파일을 전송할 때, HTTP body를 여러 부분(Multipart Data)으로 나눠서 보내는데 이러한 Multipart Data 즉, Mult..
개요application.yml에 설정한 property값들을 @Value로 가져오기보다는 해당 설정을 다루는 객체를 하나 만들어두고 가져다 쓸 수 없을까? 하는 의문에서 출발하였습니다. 찾아보니 스프링 부트에서는 @ConfigurationProperties를 통해 Property를 객체에 저장할 수 있는 방법을 제공하고 있습니다. @Value 주입 방식보다 훨씬 더 안전하고 강력한 기능을 제공합니다.1. Dependency 추가annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'2. application.ymlmy: service: enabled: false remote-addr..
⚙ 아래는 InfluxDB v2.x 기준으로 설명합니다. v2.x부터 용어 쿼리들이 크게 변경되었기 때문에 v1.x 버전과는 용어적으로 차이가 있을 수 있습니다.influxDB를 알아보기 전 시계열 데이터란?시계열은 일정 기간 동안 수집되고 시간순으로 정렬된 데이터 요소의 모음입니다. 시계열의 주요 특징은 인덱싱되거나 시간 순서대로 나열된다는 것인데 그래서 그래프에 시계열 데이터를 시각화 할 때 중요한 축은 시간이 됩니다.시계열 데이터는 다음과 같은 곳에서 사용될 수 있습니다.기상 예보주식센서 데이터일(월,연)간 구독자서버 자원 모니터링 등등요즘 들어 스마트 팩토리, 빅데이터, 코인, 주식 등이 핫한데 이런 데이터들의 특징은 시간순으로 인덱싱이 중요하고, 대용량 데이터라는 점입니다. 이러한 데이터들을 핸..
Kafka란 무엇일까?카프카는 요즘 MSA에 필수적으로 사용되는 기술입니다. 이 카프카란 뭐고 왜 필요할까요? 카프카는 링크드인이라는 회사에서 하루에 1조 몇천억이 넘는 대량의 메시지들을 처리하기 위해 개발되었습니다. 링크드인이 사용중이라면 대용량 메시지 처리를 할 수 있고 안정성 또한 높을 것이라고 기대가 됩니다.카프카는 Messaging Queue라고도 합니다. 간단하게 말해서 메시지를 보내는 쪽이 있고 그 메시지를 관리하는 주체가 있고, 또 그 메시지를 수신하는 쪽이 있을 겁니다. Messaging Queue는 Pub/Sub Model을 의미하는데 카프카 말고도 여러 MQ들이 있는데 카프카의 차별화된 점은 무엇인지 알아보도록 하겠습니다.Messaging Queue: 카프카를 알아보기 전에Publis..
들어가기 전 이전 시간에 알아봤던 N+1 해결법에 이어서 FetchJoin을 이용해서 해결할 수 있었습니다. 하지만 Fetch Join이라고 다 해결할 수 있는 것은 아닙니다. 이번 시간에는 Fetch Join을 사용했을 때 어떠한 사이드 이펙트가 있는지 알아보고 그 해결책에 대해서 알아봅니다. 1. FetchJoin, EntityGraph 사용 시 Pagination을 사용할 수 없다. FetchJoin과 EntityGraph 둘 다 동일한 증상이 발생합니다. Fetch Join만 테스트를 해보겠습니다. @Query( value = "select t from Team t join fetch t.members", countQuery = "select count(t) from Team t" ) List f..
UML이란? UML은 Unified Modeling Language(통합 모델링 언어)의 약자로 1997년, OMG(Object Management Group) 표준화 기구에서 모델을 만드는 표준 언어로 채택되었습니다. UML은 객체 지향 소프트웨어를 개발할 때 시스템과 산출물을 명세화, 시각화, 문서화할 때 사용합니다. UML을 사용하는 이유? 복잡한 아이디어와 시스템을 비개발자도 쉽게 이해 시스템의 전체 구조를 이미지로 한눈에 쉽게 파악 표준화된 기호를 이용하기 때문에 서로 다른 개발자와 소통 불일치 방지 소프트웨어를 개발 또는 분석 설계를 위해 개발자, 기획자, 아키텍처 등이 참여를 합니다. 클라이언트의 요구사항을 해결하기 위한 기능에 대해서 코드로 작성하면 너무 길어지고 한번에 이해하기는 더더욱 ..