전체 글(472)
-
Dimensional Modeling With DBT
등장 배경전통적인 DBMS 모델링에서 겪었던 문제테이블에 중복 없이 데이터를 저장하기 위해 여러 테이블로 나누는 정규화 과정을 거치게 되며, 복잡한 조인 작업을 필요로 함.테이블 간의 조인이 자주 발생하면 성능 저하 및 비용 증가를 유발할 수 있음.DBMS와 다른 OLAP DataWarehouse에서 다른 설계가 필요함.DBMS에서는 라이브로 다수의 유저가 변경 작업이 있음, 이에 따라 중복을 피하고 일관성을 유지하는 것이 중요함.Data Warehouse에서는 분석 성능을 높이기 위해 데이터 중복을 허용하고, 비정규화된 테이블 구조를 채택하는 경우가 많습니다. 이러한 방식은 데이터 조회를 빠르게 하고, 복잡한 조인 없이 데이터를 효율적으로 분석할 수 있음.따라서 OLTP와 다르게 데이터를 효율적으로 분..
2024.09.29 -
Clean Architecture(DDD?)
친한 동생들과 얘기하던 중 면접 중에 Clean Architecture에 대해서 물어봤다고해서 띠용 이게 뭐지? 라는 생각이 들어서 찾아봤다. Clean ArchitectureClean Architecture는 프로젝트 구성을 사용 목적에 따라 계층으로 분류하고 각 계층끼리 의존성을 제어하며 실행되는 시스템 구조를 의미한다. 이런 구조가 왜 나오게 된 것일까? 1. 테스트 편의성 각 계층은 하위 계층이 어떻게 구현된지 모르는채 개발하는 것이 중요한 구조이다. 따라서 다른 계층의 코드의 영향 없이 각 계층의 로직만 테스트 코드를 작성해주면 된다. e.g) 1. Bussiness 로직만 구현한 코드만 테스트 코드 작성 2. DB를 조회하는 코드만 테스트 작성 즉 각 계층의 역할을 서로 신경쓰지 않고 테스트 ..
2024.09.17 -
http와 https의 차이
HTTP(Hypertext Transper Protocol)HTTP는 Application 계층에서 요청을 서버에 보내고 응답을 받는 프로토콜이다. 하지만 HTTP를 사용하기에 문제가 있는 점이 있는데 요청 및 응답이 평문으로 전송되어 중간에서 데이터 패킷 제 3자가 가로채고 읽을 수 있습니다. HTTP의 보안 이슈를 해결하기 위해서 만든 것이 HTTPS(Hypertext Transper Protocol Secure)입니다. HTTPS는 어떻게 작동하는가?HTTPS는 요청 및 응답을 SSL와 TLS와 결합합니다. 이 과정을 아래에 설명합니다. 독립된 인증 기관에서 SSL/TLS 인증서를 획득합니다.여기서 말하는 독립기관은 SSL/TLS 인증서를 발급해주는 회사를 의미힙니다. 찾아보면 여러 회사가 존재하는..
2024.09.16 -
L4, L7 Loadbalancer 차이
L4, L7 LoadbalancerLoadbalancer는 트래픽이 들어왔을 때 부하 및 특정 목적에 의해 분산을 시켜주는 기능을 제공하고 있다. L4와 L7 각각에 Loadbalancer를 적용할 수 있는데 트래픽을 분산 시키는 기능은 비슷하나 다른 목적을 갖고 있다. 우선 L7과 L4에서 어떤 작업이 이루어지는지 알아보자 L7 LayerApplication Layer로 일반적인 사용자의 요청과 연결되어 있는 계층입니다. 주요 프로토콜HTTPHTTPSSMTPFTP역할 1. SSL/TLS 등을 활용해 데이터를 암호화 및 인증 역할을 합니다.2. 세션 관리3. 애플리케이션과 네트워크가 바로 맞다아 있는 계층이기 때문에 바로 잘 상호작용 할 수 있도록 설정되어 있습니다. L4 Layer데이터를 신뢰성 있..
2024.09.10 -
DBT + Argo Workflow + Snowflake
사내에서 DBT를 이용해 유저 + 이벤트를 모델화 시켜서 이용 중이다. 각 이벤트 및 유저 데이터가 들어오는 주기가 다르고 이를 Argo Workflow를 이용해서 업데이트 하는 방법을 작성하려고 한다. 다른 개발자 붙들이 쓴 글 대부분이 DBT + Airflow 인데 지금 팀에서는 Argo Workflow를 사용하고 있어서 Argo Workflow을 사용한다면 이 글이 도움이 될 것 같다! Argo Workflow(link) Arco CD에 비해서 많이 유명하진 않지만 Argo에서 Workflow를 개발해서 이용한 플랫폼이 있다. K8S가 있다면 Helm 및 일반적인 이미지를 이용해서 쉽게 배포할 수 있다. Argo Helm Chart 홈페이지, github Argo Helm ChartsArgoPr..
2024.08.12 -
Golang PGO 도입기
Golang PGO(Profile-guided optimization)목차PGO란?PGO의 원리Golang에서 PGO의 구현Golang에서 사용하기FAQ결론참고 자료PGO란?Golang 1.20에서 테스트 배포 후 유저의 피드백을 받아서 1.21 버전(2023년 9월 5일)에서 Production에 배포됐습니다. (링크) Golang에서 이전과 다르게 병목된 부분을 분석하기 위해서 프로파일링을 하는 것이 아닌 컴파일 단계에서도 어플리케이션을 최적화하기 위해서 도입됐습니다. 컴파일러 입장에서 컴파일 과정에서 프로그램을 실행해볼 수 없기 때문에 어떤 부분의 코드가 자주 실행되고 병목현상이 발생하는지 알 수 없습니다. 이 문제를 해결하기 위해 애플리케이션을 Profiling해서 데이터를 수집하고 컴파일 할때 ..
2024.06.24