전체 글

꾸준하게 열심히..
⚙️ Devops/📬 Kafka

Kafka Cluster(Broker), Zookeeper에 대해서 이해하기

Kafka란 무엇일까?카프카는 요즘 MSA에 필수적으로 사용되는 기술입니다. 이 카프카란 뭐고 왜 필요할까요? 카프카는 링크드인이라는 회사에서 하루에 1조 몇천억이 넘는 대량의 메시지들을 처리하기 위해 개발되었습니다. 링크드인이 사용중이라면 대용량 메시지 처리를 할 수 있고 안정성 또한 높을 것이라고 기대가 됩니다.카프카는 Messaging Queue라고도 합니다. 간단하게 말해서 메시지를 보내는 쪽이 있고 그 메시지를 관리하는 주체가 있고, 또 그 메시지를 수신하는 쪽이 있을 겁니다. Messaging Queue는 Pub/Sub Model을 의미하는데 카프카 말고도 여러 MQ들이 있는데 카프카의 차별화된 점은 무엇인지 알아보도록 하겠습니다.Messaging Queue: 카프카를 알아보기 전에P..

🌻 JAVA/자바 ORM 표준 JPA 프로그래밍

JPA - Fetch Join이 과연 만능인가? (N+1, Pagination)

들어가기 전 이전 시간에 알아봤던 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 개념 및 종류 (feat. 협업 시 필수!)

UML이란? UML은 Unified Modeling Language(통합 모델링 언어)의 약자로 1997년, OMG(Object Management Group) 표준화 기구에서 모델을 만드는 표준 언어로 채택되었습니다. UML은 객체 지향 소프트웨어를 개발할 때 시스템과 산출물을 명세화, 시각화, 문서화할 때 사용합니다. UML을 사용하는 이유? 복잡한 아이디어와 시스템을 비개발자도 쉽게 이해 시스템의 전체 구조를 이미지로 한눈에 쉽게 파악 표준화된 기호를 이용하기 때문에 서로 다른 개발자와 소통 불일치 방지 소프트웨어를 개발 또는 분석 설계를 위해 개발자, 기획자, 아키텍처 등이 참여를 합니다. 클라이언트의 요구사항을 해결하기 위한 기능에 대해서 코드로 작성하면 너무 길어지고 한번에 이해하기는 더더욱 ..

🌻 JAVA/자바 ORM 표준 JPA 프로그래밍

[JPA] N+1 문제와 해결 (feat. fetch join, EntityGraph)

💡 아래 실습에 진행한 모든 코드는 Github에 있습니다. JPA N+1이란? 실무에서 JPA를 사용하다보면, N+1 쿼리를 만나게 됩니다. 여기서 N+1이란 Team(1) ↔ Member(N) 연관관계가 있다고 가정했을 때, 하나의 팀을 조회했지만 팀 내부에 있는 모든 멤버들이 함께 조회되면서 1+N 개의 쿼리가 발생하는 것을 의미합니다. 직접 테스트 코드를 통해 이러한 상황들을 해결할 수 있는 방법들을 살펴보고 각 상황이 또 어떤 사이드이펙트가 있는지도 알아보겠습니다. Entity 및 Repository 코드 실습에 사용될 코드는 다음과 같습니다. @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Membe..

🐍 Python

[Python] influxdb 삽입 시 timezone 주의사항 (feat. datetime.now()를 지양하자)

Intro 파이썬으로 InfluxDB에 데이터를 저장시키는 모듈을 개발하다 이상한점이 생겼습니다. KST로 넣었는데 이게 그대로 UTC로 들어가 있거나 분명 UTC로 저장시켰는데 KST로 저장되어있거나.. 희한한 현상이 발생했습니다. 그래서 파이썬 코드를 전부 까보며 influxDB 저장할 때 시간을 변환하는지와 서버 타임존과 관련이 있는지 알아보도록 하겠습니다. 서버의 타임존이 다르면, influxdb에는 시간이 어떻게 찍힐까? TL;DR 💡 서버 시간에 따라서 `datetime.timestamp()` 함수가 UTC 시간으로 보정하여 변환한다. 그렇기 때문에 서버 타임존에 따라서 timestamp()의 결과가 달라질 뿐, influxdb_client 라이브러리를 통해 데이터 삽입 시에는 따로 시간이 변..

🔥 Computer Science/📡 네트워크

5. 전송 계층에서는 어떤 일을 할까? (TCP/IP 4 Layer)

개요 이전 시간에는 TCP/IP 3계층인 네트워크 계층을 배웠는데요. 네트워크 계층에서는 라우터와 IP를 통해 외부 네트워크에 있는 목적지로 전송할 수 있는 것을 알아봤습니다. 그렇다면 그렇게 전송받은 데이터를 PC 내부에서 어떤 응용프로그램으로 전달해줘야 할까요? 그 해답은 바로, 이번 시간에 배울 전송 계층입니다. 전송계층의 특징 데이터를 받긴 받았는데.. 데이터를 받긴 받았는데.. 이거 누구꺼야? 예를 들어, 내가 게임을 하고 있는데 브라우저에서 요청한 데이터가 게임한테 가면 안되겠죠? 이 데이터가 누구로부터 온것인지, 누구한테 보내는건지에 대한 정보를 바로 네트워크 계층에서 알고 있습니다. 연결형 통신(TCP), 비 연결형 통신(UDP) 전송 계층의 또 다른 특징으로는 신뢰성/정확성 그리고 효율성..

iseunghan
iseunghan