개요 데이터 엔지니어와 백엔드 개발자들이 자주 다루는 Apache Parquet 포맷은 일반적인 텍스트 데이터를 zip으로 압축한 것보다 훨씬 빠른 쿼리 성능을 보여준다. 이번 포스트에서는 Parquet가 왜 그렇게 빠른지, 열 지향(columnar) 구조가 어떤 원리로 쿼리 성능을 높이는지, 그리고 Parquet에서 사용되는 주요 압축 및 인코딩 기법들을 살펴보자. 또한 Trino, Spark, Hive 같은 분산 쿼리 엔진이 Parquet 데이터를 효율적으로 읽는 방법과, 일반 zip 압축 파일과 열 지향 압축 방식의 성능 차이도 비교해보자. Parquet가 일반 Zip 압축보다 빠른 이유일반적인 zip 등의 파일 압축은 모든 데이터를 통째로 묶어 압축하는 반면, Parquet 포맷은 열 단위로 데이..
개요현대 웹 애플리케이션에서는 사용자가 한 번 로그인한 후에는 요청마다 다시 로그인하지 않고도 인증 상태를 유지해야 한다. 이를 구현하는 대표적인 방법으로 세션(Session) 기반 인증, JWT(Json Web Token) 기반 인증, OAuth 2.0 기반 인증(제3자 인증 위임)이 있다. 각각의 개념과 동작 흐름, 장단점, 보안 고려사항을 살펴보고 간단한 코드 예시를 통해 이해해보자. 세션 기반 인증 (Session-Based Authentication)개념세션 기반 인증은 서버가 사용자 인증 정보를 직접 저장하고, 클라이언트(브라우저)는 이 세션에 대응하는 세션 ID를 쿠키로 가지고 있는 방식이다. 브라우저가 요청을 보낼 때마다 쿠키에 담긴 세션 ID를 보내주면, 서버는 해당 세션 ID에 매핑된 ..
개요 네트워크 통신은 현대 IT 환경의 핵심이다. 서로 다른 시스템이 정보를 주고받기 위해서는 일정한 규약, 즉 프로토콜이 필요하다. 이러한 통신에 필요한 여러 기능들을 효율적으로 관리하기 위해 계층별로 분리한 것이 바로 OSI 7계층이다. 이 글에서는 OSI 7계층이 왜 존재하는지, 각 계층이 어떤 역할을 하는지, 그리고 데이터 전송 과정에서의 encapsulation과 decapsulation 개념과 TCP/IP 스택과의 차이점을 하나하나 살펴보자. 내용OSI 7계층이 왜 존재하는가?네트워크 통신을 위해서는 임의의 규약, 즉 프로토콜이 반드시 필요하다. 통신에 필요한 다양한 기능들을 하나의 거대한 시스템으로 관리하기에는 복잡도가 높아지기 때문에, 이를 계층별로 나누어 관리하는 것이 필요하다. OSI ..
개요 api 응답 속도를 고려할 때 네트워크 비용에 대해서는 깊게 생각하지 않고 추상화하여 퉁치곤 했다. 그런데 분명 네트워크도 인풋값과 통신 속도를 알면 계산할 수 있을 거라는 생각이 들어 공부 해보았다. 이번 글에서는 네트워크 비용의 기본 개념부터 실제 계산 방법, 그리고 다양한 상황에서의 네트워크 비용 산정 방법에 대해 자세히 알아보고자 한다. 네트워크 비용의 기본 개념네트워크 비용은 데이터를 전송하는 데 소요되는 시간과 자원을 의미한다. 이는 주로 다음과 같은 요소들로 구성된다: 대역폭(Bandwidth)초당 전송할 수 있는 데이터의 양을 나타내며, 일반적으로 Mbps(Megabits per second) 단위로 측정된다. 데이터 크기(Data Size)전송하려는 데이터의 크기를 KB(Kiloby..