개요 네트워크 통신은 현대 IT 환경의 핵심이다. 서로 다른 시스템이 정보를 주고받기 위해서는 일정한 규약, 즉 프로토콜이 필요하다. 이러한 통신에 필요한 여러 기능들을 효율적으로 관리하기 위해 계층별로 분리한 것이 바로 OSI 7계층이다. 이 글에서는 OSI 7계층이 왜 존재하는지, 각 계층이 어떤 역할을 하는지, 그리고 데이터 전송 과정에서의 encapsulation과 decapsulation 개념과 TCP/IP 스택과의 차이점을 하나하나 살펴보자. 내용OSI 7계층이 왜 존재하는가?네트워크 통신을 위해서는 임의의 규약, 즉 프로토콜이 반드시 필요하다. 통신에 필요한 다양한 기능들을 하나의 거대한 시스템으로 관리하기에는 복잡도가 높아지기 때문에, 이를 계층별로 나누어 관리하는 것이 필요하다. OSI ..
개요 본 글에서는 분류 모델의 성능 평가 도구인 혼동행렬에 대해 살펴본다. 혼동행렬의 정의와 구성 요소를 이해하고, 임계값의 필요성과 역할을 분석하며, 혼동행렬이 왜 중요한지, 그리고 이를 활용해 어떠한 성능 평가 지표를 도출할 수 있는지에 대해 설명한다. 혼동행렬의 정의혼동행렬(confusion matrix)은 분류 모델이 예측한 결과와 실제 정답을 비교하여 모델의 성능을 평가하는 도구이다. 혼동행렬은 보통 다음 네 가지 구성 요소로 이루어진다. True Positive (TP): 실제로 긍정인 데이터를 모델이 긍정으로 올바르게 예측한 경우이다.False Positive (FP): 실제로 부정인 데이터를 모델이 긍정으로 잘못 예측한 경우이다.True Negative (TN): 실제로 부정인 데이터를 ..
개요 JPA는 엔티티 간의 관계를 설정할 때 다양한 페치 전략을 제공하며, 그 중 지연 로딩(Lazy Loading) 은 성능 최적화를 위해 자주 사용된다. 지연 로딩은 실제로 연관된 데이터가 필요할 때만 데이터베이스에서 로딩하는 방식으로, 초기 로딩 시 불필요한 데이터를 가져오는 것을 방지하여 애플리케이션의 응답성을 향상시킨다. 이번 글에서는 JPA에서 지연 로딩이 왜 사용되는지, 연관 관계의 주인이 무엇인지, 지연 로딩 시 프록시와 null이 어떻게 할당되는지, 그리고 특히 OneToOne 양방향 관계에서 지연 로딩이 정상적으로 동작하지 않는 이유에 대해 생각해보겠다. 연관 관계의 주인 JPA에서 연관 관계의 주인(Owner) 이란, 두 엔티티 간의 관계에서 실제로 데이터베이스의 외래 키(Forei..
개요 api 응답 속도를 고려할 때 네트워크 비용에 대해서는 깊게 생각하지 않고 추상화하여 퉁치곤 했다. 그런데 분명 네트워크도 인풋값과 통신 속도를 알면 계산할 수 있을 거라는 생각이 들어 공부 해보았다. 이번 글에서는 네트워크 비용의 기본 개념부터 실제 계산 방법, 그리고 다양한 상황에서의 네트워크 비용 산정 방법에 대해 자세히 알아보고자 한다. 네트워크 비용의 기본 개념네트워크 비용은 데이터를 전송하는 데 소요되는 시간과 자원을 의미한다. 이는 주로 다음과 같은 요소들로 구성된다: 대역폭(Bandwidth)초당 전송할 수 있는 데이터의 양을 나타내며, 일반적으로 Mbps(Megabits per second) 단위로 측정된다. 데이터 크기(Data Size)전송하려는 데이터의 크기를 KB(Kiloby..