최신글

more

간단한 원칙으로 좋은 HTTP API 만들기

개요 REST API라는 용어는 자주 사용하고, 면접 시에도 자주 질문을 받아서 면접 전에 해당 내용을 정리하고 가는 경우가 많습니다. 하지만, 막상 실무에서는 REST API의 복잡한 내용을 기억하기보다는 간결한 원칙들을 기억하고 지키는 것이 중요한 경우가 많습니다. 그래서 이 글에서 REST API를 간단히 훑어본 후 RESTful API는 아니지만 좋은 HTTP API를 만들기 위해 핵심적으로 기억해야 할 몇 가지를 정리하려고 합니다. REST API란? RESTful API는 아니더라도 REST API의 내용을 이해하고 필요한 부분을 이해하고 지키는 것은 중요하기 때문에 한 번 내용을 정리하고 가려고 합니다. API는 하나의 Application이나 서비스가 다른 Application의 서비스 내..

Design 2024.02.18 0

파이썬 Docstring 으로 문서화하기

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

Python 2024.01.14 5

양양 북카페 카페로그 그리고 원제 스님의 다만 나로 살 뿐

 여행 둘째 날에 양양에 있는 북카페인 카페로그에 갔다. 여행 중에 책을 읽고 싶어서 북카페를 찾던 중 우연히 발견한 곳인데 사방이 숲 뷰여서 책읽기가 정말 좋았다. 좌석은 다양한 종류의 좌석이 있었는데 노트북 할 게 아니라서 숲이 제일 잘 보이고 의자가 편해 보이는 자리에 앉았다. 카페로그 신기한 점은 교과서 협회에서 운영하는 숙소 건물에 있는 카페라는 것이다. 그래서 그런지 책도 많고, 책 읽기 좋은 환경이었다. 우리는 주말 9시 30분 정도에 도착해서 우리가 도착했을 때는 두 팀 정도 밖에 없었는데 10시 30분정도 되니깐 사람들이 쭉쭉 들어왔다. 아 카페 뷰나 시설은 좋았는데 커피 맛이나 빵은 아쉬웠다..ㅠㅠ 카페 로그에서 좋았던 건 멋진 뷰나 커피도 아니고 이 책을 발견한 것이다! 원제라는 스..

정보 2024.01.14 6

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

BigQuery Merge Query 설명 및 사용 사례

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

Data Engineering 2023.11.05 0

Airflow KubernetesPodOperator 예제 코드 및 설명

KubernetesPodOperator는 Kuberntes cluster에서 Airflow가 실행중일 때 사용자가 원하는 docker image에서 task를 실행하는 task를 만드는 Operator입니다. Airflow는 여러 가지 서비스들을 Orchestration할 수 있다는 강점을 가지고 있습니다. 직접 데이터를 처리하는 서비스들을 여러 개 만들수도 있는데 이 때 각각의 서비스의 의존성이 다를 수 있는데 이 때 KubernetesPodOperator 를 사용하면 독립적인 컨테이너 환경에서 서비스를 실행할 수 있습니다. Install KubernetesPodOperator 를 위해 필요한 kubernetes provider 패키지 설치 pip install apache-airflow[cncf.ku..

Data Engineering 2023.07.22 0

초기 스타트업에서 Data Engineer는 어떤 일을 하나요?

이 글은 Medium 회사 블로그에 올린 글을 가져온 글 입니다! 안녕하세요. 저는 Verticah에서 Head of Data로 일하고 있는 Jordan입니다. 회사의 기술 블로그에 첫 번째 글로 초기 스타트업에서 데이터 엔지니어로 어떤 일을 하고 있는지를 소개해 보려고 합니다. 저희 팀은 현재 11명의 구성원으로 이루어진 Seed 투자를 받은 초기 스타트업으로 혁신 성장기업의 자금 조달 방식을 혁신하자는 비전 아래 Revenue Market이라는 미래의 매출을 판매할 수 있는 벤처 대출 플랫폼을 만들고 있습니다. Why an early-stage team needs a data guy 많은 회사들이 데이터 관련 직무를 회사가 어느 정도 성장한 후(A 시리즈 이후)에 채용합니다. 하지만, 데이터와 관련된..

Data Engineering 2023.07.10 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

양양 북카페 카페로그 그리고 원제 스님의 다만 나로 살 뿐

 여행 둘째 날에 양양에 있는 북카페인 카페로그에 갔다. 여행 중에 책을 읽고 싶어서 북카페를 찾던 중 우연히 발견한 곳인데 사방이 숲 뷰여서 책읽기가 정말 좋았다. 좌석은 다양한 종류의 좌석이 있었는데 노트북 할 게 아니라서 숲이 제일 잘 보이고 의자가 편해 보이는 자리에 앉았다. 카페로그 신기한 점은 교과서 협회에서 운영하는 숙소 건물에 있는 카페라는 것이다. 그래서 그런지 책도 많고, 책 읽기 좋은 환경이었다. 우리는 주말 9시 30분 정도에 도착해서 우리가 도착했을 때는 두 팀 정도 밖에 없었는데 10시 30분정도 되니깐 사람들이 쭉쭉 들어왔다. 아 카페 뷰나 시설은 좋았는데 커피 맛이나 빵은 아쉬웠다..ㅠㅠ 카페 로그에서 좋았던 건 멋진 뷰나 커피도 아니고 이 책을 발견한 것이다! 원제라는 스..

정보 2024.01.14 6

삼성동 대장 카페 키헤이커피 / 삼성중앙역 카페

오늘은 제가 평일 매일 아침에 가는 카페인 키헤이커피를(KIHEI) 소개하려고 합니다. 삼성동은 맛이 좋은 카페가 많은 곳인데요. 제가 좋아하는 커피 볶는집도 있고요. 하지만, 요즘은 키헤이 커피만 주로 가고 있습니다. 키헤이커피는 우연히 회사 사무실이 이 근처로 이사오면서 알게된 카페로 커피 맛이 좋아 리프를 통해 구독까지 하게 됐습니다. 카페 구독서비스인 리프에 대한 소개는 이전 포스팅에서 확인하실 수 있습니다. 그럼 이제 본격적으로 키헤이 커피를 소개 해드리겠습니다! 키헤이는 하와이 마우이 남서부 해안, 햇빛이 가장 찬란하고 가장 건조해 해변에서 보물을 찾기 좋은 섬 끝 마을의 이름으로 키헤이에서 행복한 추억을 일상에서 전달 하고 싶어서 키헤이커피라고 가게 이름을 지으셨다고 합니다. 이 내용은 카페..

정보 2023.09.16 0

카페 구독서비스 리프 후기

우연히 회사 근처에 카페에 갔다가 리프(rife)라는 카페 구독 서비스를 발견해서 구독해봤습니다. 다양한 새로운 서비스를 써보는 것을 좋아하는 편이고, 하루에 한 잔 한 달에 42900원이라는 가격과 커피 맛이 괜찮은 키헤이카페라는 점에서 합리적으로 보여서 설치해봤습니다. 키헤이 카페는 평일만 열어서 하루에 한 잔 20잔을 마신다고 하면 한 잔에 2000원 정도 가격에 커피를 마실 수 있습니다. 지하철 정기권과 비슷한 느낌입니다..! 마침 일주일 체험권도 받을 수 있어서 만족하면서 월요일 부터 오늘까지 하루에 한 잔 마셔본 결과 맛 좋은 커피와 합리적인 가격에 만족합니다. 내일은 태풍으로 재택을 할 예정이라...아쉽지만 패스... 문제는 휴가가 많은 분이나 재택이 많으신 분은 차라리 집 근처 좋아하는 카..

일상 2023.08.09 2
반응형