최신글

more

Python Kafka Consumer 라이브러리 Faust PoC하기 (Feat. Django)

Kafka의 Consumer Application 사용 목적으로 몇 가지 Library를 살펴보다가 Faust라는 라이브러리를 발견했다. Consumer 안에서 Django ORM을 사용해보려고 했는데 다양한 Python Package와 integration을 지원한다고 해서 관심을 가지게 됐고, POC 해보면서 느낀 점을 정리해보려고 한다. 처음 살펴보는 라이브러리이고 아직 Kafka에 대한 지식이 많지 않아서 기록 목적으로 남기는 점 참고 부탁드립니다! 주요 살펴볼 부분은 아래와 같았다. 로컬 셋팅 및 간단한 예제 Django와 Integration 오프셋 관리 및 자동 재시도 및 오류 복구 Consumer Group 관리 및 배포 편의성 커뮤니티&사용사례 Local Setup 및 기본 테스트 로컬에..

Data Engineering 2024.04.13 0

파리 8구 숙소 엘리제8 후기 / 파리 가성비 숙소 / elysee8 hotel Paris

오늘은 2024년 3월 말에 파리여행에서 숙박한 숙소인 엘리제8의 후기를 남기려고 합니다. 저는 처음에 숙소를 구할 때 괜찮아 보이는데 호텔 엘리제8의 후기가 많지 않아서 고민을 했었는데 다른 분들은 후기를 보시고 호텔을 선택하는데 도움이 되면 좋겠네요!엘리제8은 샹젤리제 근처인 8구에 위치한 극강의 위치의 가성비 숙소입니다! 저는 5일 동안 머무르면서 정말 열심히 놀고, 여기서 정말 잘 쉬었습니다. 여행 가기 전에는 호텔에서 머무르는 시간이 많지 않을 줄 알았는데 생각보다 시차 및 많이 걷다 보니 피곤해서 9시나 10시 되면 숙소 와서 쉬다가 자게 되더라고요. 30대 에게 파리 여행에서 수면 퀄리티는 매우 중요합니다! 이 글에서는 호텔 엘리제8에 대해서 위치/가격/룸 컨디션 및 서비스 그리고 조식에 대..

프랑스 2024.04.10 2

Publish/Subscribe 와 Producer/Consumer 메시징 시스템

Publish/Subscribe(이하 Pub/Sub) 메시징 시스템과 Producer/Consumer 메시징 시스템에 대해서는 대부분 Kafka나 RabbitMQ 등 여러 메시징 시스템을 리서치 후 선택할 때 자주 본 개념일 것입니다. 하지만, Kafka 도입을 위해서 살펴볼 때 Pub/Sub 메시징 시스템인데도 불구하고 Producer와 Consumer라는 개념을 맞닥뜨리게 될 때 '내가 잘 못 알고 있었나?'라는 생각이 들면서 다시 찾아보게 됩니다. 결론부터 얘기하면 Kafka의 기본 아키텍처와 데이터 처리 모델에 주안해서 네이밍을 했기 때문입니다. Kafka는 본질적으로 Publish-Subscribe 모델을 기반으로 하지만, 그 구현 방식과 사용 사례가 전통적인 Publish-Subscribe ..

Data Engineering 2024.04.10 0

DW, DB

more

ETL과 ELT의 차이, ELT가 더 가치있는 이유 그리고 EtLT

ETL과 ELT의 차이 ETL과 ELT의 차이는 데이터를 소스에서 타켓으로Ingestion하는 과정에서 Transafrom을 언제 하는지에 대한 차이입니다. ETL은 Extract-Transfrom-Load 순으로 진행됩니다. 반면에 ELT는 Extract-Load-Transform순으로 진행됩니다. 많은 글에서 ELT가 데이터를 Transform하지 않은 상태로 DataLake 또는 Data Warehouse에 데이터를 적재하지 않기 때문에 원시 데이터로 부터 다양한 가공이 가능해서 더 데이터를 잘 활용할 수 있다고 설명하는 부분에 집중합니다. 하지만, ELT의 패러다임은 단순히 Transformation 순서만 바뀐 것이 아니라 Ingestion layer와 Transformation layer를 나..

DataPlatform 2023.06.24 4

Data Platform이란? / 데이터플랫폼이란

데이터 엔지니어의 가장 중요한 역할 중 하나는 데이터플랫폼을 구축하는 일이라고 생각합니다. 데이터 플랫폼은 기존의 데이터웨어하우스 중심의 시스템에서 벗어나 다양한 데이터를 다루고, 확장 가능하고 더 데이터를 잘 활용할 수 있는 종합적인 플랫폼을 의미합니다. 참고: 데이터 웨어하우스와 데이터플랫폼의 차이 이 글은 데이터 플랫폼의 구성에 대해서 계속 공부하면서 업데이트해나갈 예정입니다. 그리고 각각의 구성요소들을 다른 글에서 계속해서 업데이트를 해나가려고 합니다. 데이터 플랫폼은 다양한 구성요소가 있고, 각각의 구성요소 또한 다양한 서비스와 기술스택으로 구성할 수 있어서 경험을 하고 공부를 하면서 계속 글을 업데이트할 예정입니다. 데이터플랫폼이란? Data Platform은 다양한 대규모의 데이터를 수집, ..

DataPlatform 2023.06.21 0

Data Engineering

more

Python Kafka Consumer 라이브러리 Faust PoC하기 (Feat. Django)

Kafka의 Consumer Application 사용 목적으로 몇 가지 Library를 살펴보다가 Faust라는 라이브러리를 발견했다. Consumer 안에서 Django ORM을 사용해보려고 했는데 다양한 Python Package와 integration을 지원한다고 해서 관심을 가지게 됐고, POC 해보면서 느낀 점을 정리해보려고 한다. 처음 살펴보는 라이브러리이고 아직 Kafka에 대한 지식이 많지 않아서 기록 목적으로 남기는 점 참고 부탁드립니다! 주요 살펴볼 부분은 아래와 같았다. 로컬 셋팅 및 간단한 예제 Django와 Integration 오프셋 관리 및 자동 재시도 및 오류 복구 Consumer Group 관리 및 배포 편의성 커뮤니티&사용사례 Local Setup 및 기본 테스트 로컬에..

Data Engineering 2024.04.13 0

Publish/Subscribe 와 Producer/Consumer 메시징 시스템

Publish/Subscribe(이하 Pub/Sub) 메시징 시스템과 Producer/Consumer 메시징 시스템에 대해서는 대부분 Kafka나 RabbitMQ 등 여러 메시징 시스템을 리서치 후 선택할 때 자주 본 개념일 것입니다. 하지만, Kafka 도입을 위해서 살펴볼 때 Pub/Sub 메시징 시스템인데도 불구하고 Producer와 Consumer라는 개념을 맞닥뜨리게 될 때 '내가 잘 못 알고 있었나?'라는 생각이 들면서 다시 찾아보게 됩니다. 결론부터 얘기하면 Kafka의 기본 아키텍처와 데이터 처리 모델에 주안해서 네이밍을 했기 때문입니다. Kafka는 본질적으로 Publish-Subscribe 모델을 기반으로 하지만, 그 구현 방식과 사용 사례가 전통적인 Publish-Subscribe ..

Data Engineering 2024.04.10 0

BigQuery Merge Query 설명 및 사용 사례

이번 글에서는 Merge 쿼리에 대한 설명과 Merge문의 대표적 사용 사례인 Merge쿼리를 사용해서 MySQL BigQuery 간에 데이터 웨어하우징에 사용하는 사례를 함께 기록해 보려고 합니다. 계속 변경되는 데이터 소스를 기존의 데이터셋에 정기적으로 통합해야 할 때 자주 사용됩니다. Merge 쿼리 BigQuery에서 MERGE 쿼리는 SQL의 MERGE 문을 기반으로 하며, 두 개의 테이블을 결합하여 대상 테이블에 소스 테이블의 데이터를 삽입, 업데이트, 또는 삭제하는데 사용됩니다. 이것은 일종의 "upsert" 작업으로 보일 수 있으며, 즉 존재하지 않는 행은 삽입하고 존재하는 행은 업데이트하는 기능을 제공합니다. 위에서 설명한 것처럼 조건에 따라 삽입, 업데이트, 또는 삭제가 가능하기 때문에..

Data Engineering 2023.11.05 0

Django (장고)

more

장고는 DB connection을 어떻게 관리할까?

! 이 글은 Django 5.0을 기준으로 작성됐습니다. 내부 코드를 분석한 부분은 저의 해석으로 잘못 이해한 부분이 있을 수 있습니다. DB Connection in Django Django를 사용하다가 다른 Framework를 사용하면 귀찮은 부분 중 하나가 명시적으로 DB Connection을 관리하는 부분입니다 예를 들어, Flask를 사용하여 SQLAlchemy를 적용할 때는 다음과 같이 데이터베이스 연결을 생성하고 관리해야 합니다. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' db = SQLAlchemy(app) # 사용자 추가 API @app.route('/user', methods=['POST']) def add_user(..

Django 2023.12.25 0

Django에서 CSRF 공격을 막기 및 CSRF 토큰의 이해와 활용

웹 보안에 있어서 중요한 공격 유형 중 하나인 CSRF(Cross-Site Request Forgery)는 사용자의 의도와 무관하게 공격자가 준비한 악의적인 요청을 보내게 만드는 기법입니다. 사용자가 로그인 상태에서 공격자가 조작한 웹페이지에 접속할 경우, 그 페이지는 사용자가 인지하지 못하는 사이에 위조된 요청을 보내게 됩니다. 이를 통해 공격자는 사용자의 인증을 악용할 수 있습니다. Django는 이러한 CSRF 공격을 방지하기 위한 강력한 메커니즘을 기본적으로 제공합니다. 그 핵심 중 하나는 'CSRF 토큰'이 있습니다. (또 다른 방법은 CORS와 관련된 설정으로 궁금하신 분은 이 포스팅을 보셔도 좋을 것 같습니다.) CSRF 토큰이란? CSRF 토큰은 클라이언트가 서버로 요청을 보낼 때마다 서버..

Django 2023.11.08 0

Django CORS 관련 설정하기 / django-cors-headers

웹 개발을 하다보면 CORS(Cross-Origin Resource Sharing)와 같은 보안 이슈들이 흔히 발생합니다. 이는 브라우저가 서로 다른 호스트(도메인) 간의 자원 공유를 제한함으로써, 웹 애플리케이션의 보안을 강화하는 중요한 기능입니다. 이러한 제한의 근본적인 이유는 보안 취약점을 방지하기 위함인데, 예를 들어, CSRF(Cross-Site Request Forgery)와 같은 공격에서는 악의적인 웹사이트가 사용자의 브라우저에 저장된 인증 정보를 이용하여 다른 사이트에 요청을 보내는 행위를 막기 위함입니다. 데이터 엔지니어로 전향한 후에 오랜만에 서버 개발을 하려고 했더니 개념이 정확히 기억도 안 나고 사실 오랜만에 세션으로 인증을 구현할 일이 있어서 조금 헤맸습니다. CORS, CSRF,..

Django 2023.10.29 0

Python (파이썬)

more

파이썬 Docstring 으로 문서화하기

Introduction Docstring은 파이썬에서 코드 문서화의 중심에 있는 기능입니다. 코드 문서화는 좋은 프로그램의 필수적 요소입니다. 아무리 성능이 훌륭한 코드여도 문서를 잘 갖추지 않는다면 사람들은 사용하지 않을 것 이기 때문입니다. Commenting vs Documenting Code Comment: 주석은 코드를 개발자들에게 설명하기 위해서 사용. "코드는 '어떻게'를 알려주고, 주석은 '왜'를 알려줍니다.” - Jeff Atwood 코드 주석을 작성하는 목적은 계획 및 검토, 코드 설명, 알고리즘 설명, 태깅 등 여러 가지 주석은 구체적인 코드 라인이나 블록 바로 근처에 존재. PEP 8에 따르면 주석은 최대 72자까지여야 합니다. Documenting Code: 코드를 문서화하는 것은..

Python 2024.01.14 5

파이썬 import time과 run time / 임포트 타임과 런타임 이해하기

파이썬에서 import time과 runtime은 코드가 실행되는 시점에 대한 개념입니다. import time은 파이썬 모듈이 import 될 때 실행되는 코드들을 의미하고, run time은 실제 해당 함수나 클래스가 호출됐을 때 실행되는 것을 의미합니다. 이 두 개념을 이해하는 것은 코드를 작성할 때 runtime에 결정되는 변수를 import time에 실행되는 코드에 포함하면 에러가 발생할 수 있는데 이를 이해하는데 도움이 되고, 마찬가지인 개념에서 circular import 문제를 이해하는데도 도움이 됩니다. import time (임포트 타임) import time에 실행되는 코드 임포트 타임(import time)은 해당 모듈을 임포트하는 동안에 실행되는 코드로, 주로 모듈 초기화 작업이..

Python 2023.07.16 0

여행/워케이션

more

고비마운틴트래블 후기 / 몽골 여행사 후기

2023년 8월에 고비마운틴트래블이라는 여행사를 통해서 4박 5일 몽골 여행을 다녀왔습니다. 여행을 다녀온 지 벌써 8개월이나 지나서 이제야 몽골 여행 기록을 블로그에 기록해보려고 합니다. 본격적인 포스팅에 앞서 중요한 요소 중 하나인 여행사 후기를 남기려고 합니다. (가장 중요한 건 함께 가는 사람들 그리고 가이드 및 차량 기사님!) 결론부터 말하자면 저는 고비마운틴트래블 여행사를 추천하지 않습니다. 여행 일정 4박 5일 (테르지 + 차강 + 바얀작) - 1일차: 바가 가쯔링 촐로 - 2일차: 욜리암 - 3일차: 차강 소브라가 - 4일차: 테르지 - 5일차: 전망대 및 쇼핑 추천하지 않는 이유 1. 공유받은 일정 및 약속이 잘 지켜지지 않았습니다. 푸르공을 타고 여행을 할 계획이었으나 당일에 갑자기 푸..

정보 2024.04.07 2

욕망과 비즈니스

휴가 기간 동안 파리를 다녀오고, 매거진B 포르쉐 편을 읽었다. 파리와 매거진B 포르쉐편 생뚱맞은 조합이지만 이들은 나에게 ‘욕망’이라는 단어를 다시 한번 생각하게 만들어줬다. 파리 화려한 패션과 명품의 도시 그리고 포르쉐는 사람들의 모든 욕망을 담아낼 수 있는 자동차 브랜드이다. 파리와 포르쉐는 사람들의 욕망을 불러일으키고 그것을 채워줌으로써 엄청난 부가가치를 만들어내고 있는 것들이다. 나는 명품 패션이나 화장품 그리고 차에는 관심이 없는 편이다. 나한테 명품에 대한 이미지는 그저 사치품이었다. 그래서 명품은 사치 욕구를 채우기 위한 수단으로 부정적으로 생각했다. 하지만, 매거진B 포르쉐 편에서 본 글 귀중 ‘자동차 브랜드가 ’인간의 다양한 욕망’을 대하는 방식’ 이라는 글귀를 읽은 후, 포르쉐의 익스..

생각 2024.04.05 0

신수동 산책 / 카페 에토라 / 서강대

지난 주 토요일 후배 결혼식으로 오랜만에 학교에 갔다. 2,3월에 정말 정신이 없어서 날씨도 좋고 기분전환도 할 겸해서 와이프와 학교 근처 신수동을 산책하기로 했다. 산책 첫 번째 코스는 카페 에토라이다. 와이프가 찾은 카페로 내가 살던 광흥창역 근처에 생긴 카페다. 광흥창 근처에는 프렌차이즈 카페만 몇 개 있었는데 이런 힙한 카페가 생겼다니..!커피 맛도 괜찮았지만 재밌었던 점은 사장님께서 굉장히 친근하셔서 바 테이블에 앉으면 이것 저것 이야기 나눌 수 있다는 것이다. 원두도 직접 갈아주면 에스프레소도 한 잔 주신다고 하셔서 원두도 그라인딩 할 기회가 있었는데 재밌었다. 한 잔은 스파이스 바닐라빈 라떼/ 한 잔은 필터 커피를 주문했다. 개인적으로는 스파이스 바닐라빈 라떼가 더 입맛에 맞았다! 카페를 나..

일상 2024.03.12 1
반응형