Web_Backend/Spring2024. 4. 2. 21:58[멘토링] spring에서 모든 request에 특정 정적 리소스를 담아서 보내줄 수 있는 방법이 있을까요?

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다. 😲 Q1. spring에서도 모든 request에 특정 리소스를 담아서 보내줄 수 있는 방법이 있을까요? Spring backend, React frontend 프로젝트에서 프론트와 백엔드 어플리게이션을 서버에서 각각 구동시키는것이 아닌, react 앱을 빌드 한 뒤 spring 어플리케이션의 정적 리소스에 담아서 보내고자 합니다. 기존에 node 프로젝트애서 동일한 방법(프론트 앱 빌드 후 백엔드 서버의 resource로 전달)을 사용했던 경우에는 특정 정적 리소스를 모든 requerst에 담아서 보내도록 설정을 할 수 있어서 관련 설정을 해주었는데, spring에서도 모든 request에 특정 리소스를 담..

Web_Backend/Spring2024. 1. 24. 13:46[Java, kakao Rest API login] HttpURLConnection은 왜 지양되어야 하는가? (Feat RestTemplate, WebClient)

T-log 프로젝트에 대한 피드백 HttpURLConnection대신 사용할 수 있는 HTTP 웹 클라이언트에 대해서 알아보기를 조언받음. 보다 강력하고 유연한 웹 클라이언트란? HttpURLConnection RestTemplate WebClient

Web_Backend/Java2024. 1. 8. 14:15[JAVA] System.out.print~의 사용을 지양해야만 하는 이유를 알아보자(feat,, IO, 휘발성, 출력레벨, 성능저하..)

사실 전부터 'System.out.print()를 사용하면 성능에 좋지 않고 logger가 조금 더 프로젝트 내부에서 출력을 하는 목적에 맞으니 logger를 사용해보세요’라는 피드백을 받고 "System.out의 사용을 지양해야겠구나"라고는 생각하였으나 제대로 파헤쳐 보지 못했는데, 오늘 JAVA교육 수강 중 System.out이 나와 이참에 “대체 왜 System.out은 운영 및 개발환경에서 사용을 지양해야하는지” 알아보고자 한다. +[게시글 작성 마무리 작업 중 추가하는 한 마디] 한번 제대로 파헤쳐보니, 왜 System.out의 사용을 지양해야하는지 이해가 가기 시작했다. 습관적으로, 그리고 logging 프레임워크를 불러와 사용하기 귀찮다는 이유로, 디버깅 상황에서 Sout을 호출하던 습관을 ..

Web_Backend/DB2024. 1. 5. 13:21[작성중]GraphQL - 프론트엔드에서 쿼리를 마음껏 날릴 수 있다고? (보안과 권한은 어디로 가는가.. Injection은? REST와의 차이점은 뭘까?)

프론트엔드와 백엔드 개발자의 협업에 대해 이야기 나누던 도중, 기능 개발 분업 관련 이슈에 대한 대응방법중 하나로 GraphQL에 대한 이야기가 나왔다. 사실 GraphQL이라는 키워드는 몇번 들어 본 적이 있는데 graphQL이라는 이름만 듣고 'SQL과 같은 RDBMS를 다루는 일종인가?'라는 추측만 해왔던지라, 어떻게 graphQL이 프론트엔드와의 협업에서 하나의 방인이 될 수 있는지 궁금해져 찾아보게 되었다. GraphQL 페이스북(Meta)에서 만든 쿼리 언어 : 또 페이스북인가…! Graph QL(이하 gql)은 Structed Query Language(이하 sql)와 마찬가지로 쿼리 언어 SQL과 GraphQL 차이 목적 SQL : 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 ..

Web_Backend/Spring2023. 12. 26. 17:05Spring boot Gradle 프로젝트는 Build시에 Test를 실행할 까?(Feat.. jacoco CI 적용일지)

obsidian에서 작성중 Feat… CI 적용기(jacoco + checkStyle + sonar cloud + Github Action)

Web_Backend/Kafka2023. 12. 26. 16:58[Kafka] 8장 ‘정확히 한 번’의미구조(멱등성)

7장 : 신뢰성 있는 데이터 전달에서는 ‘최소 한 번’ 전달에 초점을 맞췄다면, 이번 장에서는 ‘정확히 한 번’에 초점을 맞춘다. 신뢰성을 보장한다고 하더라도 여전히 메시지 중복의 가능성은 남아있다. 하지만, 이벤트를 읽어서 평균을 구하고 결과값을 산출하는 애플리케이션을 예로 들면, 특정 이벤트가 중복해서 쓰여짐으로써 평균값이 잘못 계산되는 오류가 발생될 수 있고, 이로 인해서 “더 강력한 보장(정확히 한 번 exactly-once semantics)”을 제공할 필요가 있다. 이번 장에서는 카프카의 ‘정확히 한 번’의미구조를 사용하는 방법과, 권장되는 활용 사례, 그리고 그 한계에 대해서 살펴본다. 카프카의 ‘정확히 한 번’의미구조는 두 개의 핵심 기능(명등적 프로듀서 idempotent producer..

Web_Backend/Kafka2023. 12. 26. 16:45[Kafka] 6장 카프카 내부 매커니즘

카프카 프로덕션 환경에서 운용하기 위해서나, 카프카를 사용하는 애플리케이션을 개발하기 위해 꼭 내부 메커니즘을 알아야 하는 것은 아님. 하지만 트러블 슈팅, 혹은 실행되는 방식을 이해하는 데에 도움이 될 것. 또한 카프카 튜닝 시 명확한 의도를 가지고 설정값을 잡아주는 등 특히 도움이 될 것으로 봄. 이 장에서는 특히 아래 4가지 주제를 중점으로 다뤄볼 것. 카프카 컨트롤러 카프카에서 복제(replication)가 작동하는 방식 카프카가 프로듀서와 컨슈머의 요청을 처리하는 방식 카프카가 저장을 처리하는 방식(파일 형성, 인덱스 등) 6.1 클러스터 멤버십 기존 버전 카프카 : 주키퍼 사용. 각 브로커는 고유한 식별자(브로커 설정 파일에 정의되었거나, 자동으로 생성된)를 가짐 브로커 프로세스 시작 때마다 ..

[Kafka] 4장. 카프카 컨슈머
Web_Backend/Kafka2023. 11. 2. 19:11[Kafka] 4장. 카프카 컨슈머

카프카 컨슈머 : 중요 개념 1. 컨슈머와 컨슈머 그룹 1) 컨슈머 그룹이란? 카프카의 데이터 읽기는 다른 메시지 시스템의 읽기와 약간 다르다 여러 프로듀서들이 해당 토픽에 메시지를 쓰는 속도가 컨슈머가 메시지를 처리하는 속도보다 빠르다면 하나의 컨슈머만으로 처리한다면 추가되는 메시지 속도를 따라갈 수 없다 당연히 토픽을 소비하는 컨슈머의 수를 늘려야 한다 다수의 프로듀서들이 같은 토픽의 메시지들을 쓸 수 있는 것과 마찬가지로 다수의 컨슈머들이 같은 토픽의 메시지들을 분담해 읽을 수 있어야 한다 카프카 컨슈머들은 컨슈머 그룹에 속한다. 다수의 컨슈머가 같은 토픽을 소비하며 같은 컨슈머 그룹에 속하면 각 컨슈머가 해당 토픽의 서로 다른 파티션을 분담해 메시지를 읽을 수 있다. 2) 컨슈머 그룹의 컨슈머 수..

[Kafka] 3장. 카프카 프로듀서 : 카프카에 메시지 쓰기
Web_Backend/Kafka2023. 11. 2. 16:54[Kafka] 3장. 카프카 프로듀서 : 카프카에 메시지 쓰기

* 이 글은 카프카 핵심 가이드 - 대규모 실시간 데이터와 스트림 처리 [ 개정증보판 ]를 읽고 스터디 후 작성한 글입니다. 3장. 카프카 프로듀서 : 카프카에 메시지 쓰기 카프카 사용 예시 큐, 메시지 버스, 데이터 저장 플랫폼 등으로 활용 프로듀서(데이터를 씀)나 컨슈머(데이터를 읽어 올 때 사용) 혹은 두 가지 기능을 모두 수행하는 애플리케이션 생성해야 함. 즉, 아파치 카프카는 개발자들이 카프카와 상호작용 하는 애플리케이션을 개발할 때 사용 할 수 있는 ‘클라이언트 API’와 함께 배포됨 프로듀서를 사용하는 방법에 대해 배움 프로듀서의 디자인 프로듀서 주요 요소의 전체적인 모습 KafkaProducer와 ProducerRecord객체 생성법 카프카에 레코드 전송하는 법 카프카가 리턴할 수 있는 에..

[Kafka] 1. 카프카 시작하기
Web_Backend/Kafka2023. 11. 2. 16:32[Kafka] 1. 카프카 시작하기

* 이 글은 카프카 핵심 가이드 - 대규모 실시간 데이터와 스트림 처리 [ 개정증보판 ] 를 읽고 작성한 글 입니다. 1.1 발행/구독 메시지 전달 1.2 카프카 입문 카프카에 저장된 데이터는 순서를 유지한 채로 지속성 있게 보관, 결정적(deterministic)으로 읽을 수 있음. 확장 시 성능을 향상하고 실패가 발생하더라도 데이터 사용에는 문제가 없도록 시스템 안에서 데이터를 분산시켜 저장할 수 있음. “분산 커밋 로그” “분산 스트리밍 플랫폼” 아파치 카프카 주요 기능 : 일정 기간 동안 메시지를 지속성 있게 보관하는 보존 기능 특정 기간, 특정 사이즈에 도당 할 때 까지 보존하도록 설정 가능(만료 시 삭제) 1.2.1 메시지와 배치 메시지 : 데이터의 기본 단위(단순히 바이트의 배열→ 특정한 형..

image