2025년 연말회고 - 거봐, 회고하길 잘했지?11시간 전8분1. 남들이 정해준 답, 내가 선택하는 답### 1.0. 네 번째 맺음말을 시작하며벌써 네 번째 연말 회고다. 2022년의 첫 취업 설렘과 2023년의 상실의 아픔, 2024년의 쉼 없이 달리는 기차 같았던 시간들을 지나 여기까지 왔다. 매년 이맘때마다 느끼지만 상반기의 기억은 희미하다. 그래도 매월 회고를 작성해둔 덕분에 지난 열두달의 궤적을 되돌아보기에는 부족함이 없다. …
2025년도 읽은 것 중 인상적인 것들1주 전23분1. 똑똑하고 부지런한 사람과 일을 할 수 있는건 엄청난 행운 (https://blog.naver.com/travis88/223713038638)2. 쉬운 결정보다 나은 결정을 하자 (https://blog.naver.com/lhd1371/223721273510) 1. ![[Pasted image 20251219101030.png]] 2. 쉬운 결정이 아니라 나은 결정을 하자. 1) 가장 첫번째 드는 생각, 선택지는 보류한다. - : 가장 첫번째로 든 생각은 보통 회피/도피성 또는 쉬운 선택인 경우가 많기 때문. 2) …
[책] 안티프레질2주 전2분# 1. 트라이애드(Triad)프래질(Fragile), 강건함(Robust), 안티프래질(Antiifragile)을 트라이애드라고 부른다.나는 이 책을 읽기 전에 안티프래질이 Anti + Fragile이라서 프래질하지 않은 것, 즉 외부 충격에도 깨지지 않는 것이라고 생각했다. 프래질이 유리잔이면 안티프래질은 스테인리스 잔 정도를 생각했다. 그러나 그런 개념이 아니였다. 안티프레질은 외부 충격을 받으면 오히려 더 튼튼해지고 좋아지는 것을 의미한다. 즉 스테인리스 잔은 강건함이고 …
24년에 읽은 것 정리11개월 전7분A. [김지수의 인터스텔라] “질병없이 오래 살고 싶다면… 새해엔 이것만 피하라” 美 최정상 장수의학자의 일침 노화와 관련된 기능 저하(허약함, 만성 질환, 기억력 및 거동 능력 저하 등)는 자연스러운 현상이 아니다. 설탕과 녹말을 너무 많이 섭취하고 앉아서 생활하기 때문에 벌어지는 현상이다. 하루에 12 ~ 16시간 동안 식사를 중단하는 간헐적 단식으로 필요한 모든 …
24년 회고를 하겠습니다. 근데 이제 ai를 곁들인11개월 전17분0. 세 번째 맺음말벌써 세번째 연말 회고이다. (2022년 회고, 2023년 회고) 시간이 정말 빠르다. 특히 12월달에는 현장 감사 등의 이유로 긴장도 많이 하고 신경도 예민해져서 그런지 시간이 정말 빠르게 지나갔다. 돌아보니 24년은 정말 많은 일들이 있었다. 나에게 24년은 쉼 없이 달리는 기차처럼, 멈추지 않았지만 창밖 풍경을 놓치지 않으려 했던 해라고 …
OOP를 곁들인 Data Quality Check2024. 06. 23.7분0. To-DoData Warehouse에 Data를 적재하기 전후로 필요한 Data가 잘 적재되어 있는지, 적재한 데이터가 잘 적재되었는지를 검증할 필요가 생겼다. [사진 1]로 예를 들면 DW Table 9를 적재하기 전에는 DL Table 1, DL Table 2 데이터가 누락되지 않았는지 확인해야 한다. DW Table 9를 적재한 후에는 잘 적재되었는지 확인해야 한다. [사진 1] DW에 …
함께 자라기2024. 01. 18.16분함께 자라기의 핵심은 현재 자라고 있는지에 대한 중요성입니다. 자기계발은 복리로 돌아온다는 점을 강조하며, 이율을 높이고 지속적인 투자를 고민해야 한다고 말합니다. 또한, 복리를 만들기 위해 자신이 이미 갖고 있는 것들을 잘 활용하고 외부 자극을 받아 자기화하는 것이 중요하다고 언급합니다. 달인이 되려면 의도적 수련과 적절한 피드백이 필요하며, 전문성 형성을 위해 타당성과 피드백의 중요성을 강조합니다. 실력을 높이기 위해서는 의도적 수련이 필수적이며, 적절한 난이도와 피드백을 유지해야 한다고 말합니다. 또한, 실패를 통해 학습하고 자신의 실력을 높여주는 도구와 환경을 조성해야 한다고 강조합니다. 마지막으로, 실수는 예방하는 것이 아니라 관리해야 한다고 말하며, 실수 문화에 대해 설명합니다.
[2023 연말 회고] 나의 회고 일지2023. 12. 31.16분23년은 상실의 해였다. 회고를 통해 나는 많은 부분에서 발전했지만, 아직도 불확실한 미래에 대한 두려움과 걱정, 운전에 대한 두려움 등으로 제약을 받았다. 하지만 나는 낙관적으로 미래를 기대하며 발전해 나갈 수 있다고 믿는다.
Diving Into Delta Lake - Unpacking The Transaction Log2023. 11. 24.13분이 블로그 포스트에서는 Delta Lake의 핵심 개념인 트랜잭션 로그에 대해 설명하고, 파일 수준에서의 동작 방식과 동시 읽기 및 쓰기 문제에 대한 해결책을 제공합니다. Delta Lake 트랜잭션 로그는 Delta Lake 테이블이 생성된 이후에 수행된 모든 트랜잭션을 기록하는 중앙 레포지토리 역할을 합니다. 이를 통해 사용자는 항상 최신 데이터 뷰를 볼 수 있으며, ACID 트랜잭션과 확장 가능한 메타데이터 처리, 타임 트래블 기능 등을 지원합니다. 또한 트랜잭션 로그는 Delta Lake의 원자성을 보장하는 메커니즘으로 작용하며, 파일 추가, 제거, 메타데이터 업데이트 등의 단계로 트랜잭션을 세분화하여 로그에 기록합니다. 이를 통해 Delta Lake는 테이블의 상태를 정확하게 추적하고, 시간 여행 기능을 지원하며, 데이터 파일을 제거해도 테이블의 상태를 유지할 수 있습니다. 또한 Delta Lake는 효율적인 읽기를 위해 체크포인트 파일을 사용하여 테이블의 상태를 빠르게 재현할 수 있습니다.
Spark 맛보기 - 4. RDD, DataFrame, DataSet API2023. 11. 12.26분RDD(Resilient Distributed Dataset)는 Apache Spark의 핵심 개념으로, 분산 환경에서 병렬로 처리될 수 있는 불변의 데이터 컬렉션이다. RDD는 불변성, 탄력성, 분산 처리의 특징을 가지며, transformation과 action을 통해 작업을 수행한다. RDD는 Spark의 초기 데이터 추상화 모델이며, DataFrame과 Dataset과 같은 고수준의 추상화가 도입되었다. RDD의 주요 문제로는 사용자가 연산 함수 안에서 무엇을 하는지 스파크가 알 수 없었고, 데이터 압축 기술을 적용하기 어려웠다. Spark의 구조 확립을 위해 일상적인 패턴을 사용하여 연산을 표현하고, 지원 언어에서의 API 사용이 가능해졌다. 스파크의 핵심 장점과 이득구조를 갖추면 더 나은 성능과 공간 효율성을 얻을 수 있다. Spark DataFrame은 이름 있는 컬럼과 스키마를 가진 분산 인메모리 테이블의 역할을 하며, 스파크의 기본 데이터 타입과 정형화 타입을 지원한다. 스키마와 데이터 프레임을 미리 정의하는 것은 스파크의 성능과 비용을 개선하는데 도움이 된다.
Spark 맛보기 - 3. transformation, action, lazy evaluation2023. 11. 05.5분Spark의 RDD는 불변성을 가지고 있으며, 변경이 필요할 때는 새로운 RDD를 생성하는 transformation 과정을 거칩니다. transformation은 lazy evaluation으로 실행 계획을 최적화하고, narrow transformation은 하나의 입력 파티션을 연산하여 하나의 결과 파티션을 내놓으며, wide transformation은 다른 파티션의 데이터를 읽어 들여서 합치고 디스크에 쓰는 등의 작업을 합니다. action은 모든 transformation의 평가를 발동시키며, show(), take(), count(), collect(), save()와 같은 연산을 수행합니다. Lazy Evaluation은 쿼리 최적화와 데이터 내구성을 제공하며, 효율성, 최적화, 고비용 연산의 최소화를 특징으로 합니다.
[requests 라이브러리] 내가 아는 timeout은 너무 추상적이였어..2023. 10. 28.31분requests 라이브러리를 사용하여 python에서 HTTP 통신을 할 때 timeout 파라미터를 사용하여 응답을 기다리는 시간을 제한할 수 있다. 그러나 timeout 값이 정확히 어떤 순간을 의미하는지에 대해 혼동이 있을 수 있다. 이 글에서는 timeout 값이 client에서 server의 응답을 받는 시간을 의미한다고 가정하고, 실제 코드를 통해 그 동작을 확인해보았다. 또한, ConnectionTimeoutError와 ReadTimeoutError가 어디서 발생하는지와 timeout을 초과하는 경우에 왜 에러가 발생하지 않는지에 대해서도 알아보았다.
Spark 맛보기 - 2. 스파크 애플리케이션 개념2023. 10. 22.2분스파크 애플리케이션은 스파크 드라이버 프로그램과 클러스터의 실행기로 구성되며, SparkSession 객체를 통해 스파크 연산을 수행하는 API를 사용하여 프로그래밍할 수 있습니다. 스파크 애플리케이션은 여러 개의 job으로 변환되고, 각 job은 DAG로 변환되어 실행 계획이 됩니다. 연산은 여러 스테이지로 나뉘며, 각각의 스테이지는 최소 실행 단위인 스파크 task로 구성됩니다. SparkContext는 Spark 애플리케이션의 진입점이며, SparkSession은 SparkContext, SQLContext, HiveContext 등을 통합한 단일 진입점입니다.
Spark 맛보기 - 1. Spark란?2023. 10. 21.6분Apache Spark는 대규모 분산 데이터 처리를 위해 설계된 통합형 엔진으로, 속도, 사용 편의성, 모듈성, 확장성이라는 핵심 특성을 가지고 있다. Spark는 메모리 저장소를 지원하여 MapReduce보다 훨씬 빠르게 동작하며, MLlib, Spark SQL, Spark Streaming, GraphX 등의 라이브러리를 포함하고 있다. Spark는 스파크 코어를 중심으로 다양한 컴포넌트들이 함께 동작하며, 분산 아키텍처를 통해 데이터를 처리하고 분석하는 통합 엔진으로 사용된다.
[서평] 세상 끝의 카페2023. 09. 16.1분이 책은 생각할 거리를 제공하며, 편한 것을 추구하는 우리에게 새로운 아이디어와 기회를 얻기 위해 새로운 방향으로 나아가야 함을 알려줍니다. 또한, 만족스러운 삶과 열심히 사는 사람들의 영향력에 대해 이야기하며, 자신이 진정으로 원하는 일을 조금씩 해나가야 한다는 메시지를 전달합니다.
[Airflow 개선 - DAG Factory] 2. DAG Factory2023. 07. 16.20분DAG Factory 설계 방향과 UML 다이어그램, 그리고 코드 구조를 설명하는 글입니다. 추상화된 인터페이스를 사용하지 않은 이유와 DAG Factory의 생성자를 조금씩 나눠서 구현하는 방법을 제시합니다.
[Airflow 개선 - DAG Factory] 1. 왜 하는가?2023. 07. 08.11분DAG script 코드에서 중복 코드 문제가 발생하여 Design Patterns을 활용하여 개선하려고 한다. DAG Factory를 구현하여 중복 코드를 해결하고, 변경 포인트를 분산시키는 문제를 해결하기 위해 Factory Method와 Abstract Factory Patterns을 사용한다. 이를 통해 코드의 효율성을 높이고 반복 작업을 줄일 수 있다.
[Airflow 파먹기] airflow dags list2023. 05. 26.19분이 글은 Apache Airflow의 ActionCommand와 dag_list_dags 함수를 살펴보는 내용입니다. ActionCommand는 CLI에서 사용하는 명령어 중 하나로, dag_list_dags 함수는 해당 명령어를 실행했을 때 모든 DAG를 보여주는 함수입니다. 이 함수는 CLI에서 실행되며, 출력 결과는 DAG의 이름, 파일 경로, 소유자, 일시정지 여부 등이 포함됩니다. 또한 이 글에서는 decorator와 alias 등에 대한 이야기도 포함되어 있습니다.
[Airflow 파먹기] airflow standalone2023. 05. 20.19분Airflow Standalone Command is examined in this content, which allows running all components of Airflow under a single parent process for local development. The code includes the use of @classmethod instead of @staticmethod and the absence of a separate function for entrypoint. The CLI commands for initializing the database and starting the web server and scheduler are executed sequentially. Additionally, the code includes a print_output() function that uses print instead of logger to output colored text.
[Airflow 파먹기] cli_parser2023. 05. 20.15분get_parser() 함수는 Airflow CLI의 command line argument parser를 생성하는 함수이다. 이 함수는 lru_cache를 사용하여 속도를 높이고, argparse.ArgumentParser를 상속받는 DefaultHelpParser를 사용하여 help message를 표시한다. 이 함수는 DAG_CLI_DICT 또는 ALL_COMMANDS_DICT를 사용하여 subcommand를 생성하고, core_commands에서 자주 사용하는 명령을 포함한다.
[Airflow 파먹기] main - configuration2023. 05. 14.24분해당 코드는 Airflow의 환경설정을 담당하는 configuration 파일의 내용을 로드하여 객체로 생성하는 과정을 나타내고 있다. 이를 위해 default_airflow.cfg 파일에서 필요한 값을 읽어오는데, 이 파일은 환경변수를 포함하여 Airflow의 다양한 설정값을 담고 있다. 이 코드는 Airflow의 동작을 이해하는 데 중요한 역할을 하며, Airflow의 소스 코드를 이해하는 데 도움이 될 수 있다.
[Airflow 파먹기] Airflow 코드의 main은?2023. 05. 14.1분airflow 소스코드에서 main 함수를 찾아보고, configuration, cli_parser, arg 등으로 구성된 main 함수의 내용을 다음 포스팅에서 하나씩 살펴보기로 한다.
[Airflow 파먹기] Airflow의 component는 어떻게 실행될까?2023. 05. 13.0분1. Airflow의 component Airflow는 위 그림처럼 5개(scheduler, worker, webserver, meta db, queue)로 구성되어 있다. 이 컴포넌트들이 어떻게 연결되는지 궁금했다.
[Airflow 파먹기] 시작 !2023. 05. 13.2분앞으로 작성할 글들에서 Airflow 코드가 어떻게 구성되어 있고 어떻게 동작하는지 알아보려고 한다. 즉, Airflow가 어떤 것인지에 대해서는 다루지 않는다. Airflow에 대한 설명은 추후에 진행하는 걸로 하고, 코드를 뜯으러 가보자