2023년 상반기 회고

2023년 상반기 회고

Tags
회고
Published
July 16, 2023
Author
김태훈
2023년 상반기에는 많은 일들이 있었습니다. 좀 늦은감이 있지만 2023년 상반기에 배운점들을 분야별로 정리해 보았습니다.

ChatGPT와 프롬프트 엔지니어링

2023년 상반기를 뜨겁게 달구었던 ChatGPT가 첫번째 주자 입니다. 저도 출시 초창기부터 현재까지 유용하게 활용하고 있는대요. ChatGPT에서 파생된 프롬프트 엔지니어링에도 자연스럽게 관심이 생겨 공부 했었습니다. 그 중 Andrew 교수님의 1시간 분량의 짧은 프롬프트 엔지니어링 강좌를 블로그에 정리 하였습니다.
직무 특성상 소스 코드 및 SQL 쿼리 생성에 가장 많이 활용하고, 가끔 영문 이메일 작성시 번역 및 문법 교정에 활용하고 있습니다:
  • 데이터 변환 Python 스크립트 생성
  • 특정 주제의 샘플 코드 생성
  • SQL 쿼리 생성
  • 프로그래밍 언어간 변환
  • 영작문 및 맞춤법 교정

MLOps

회사에서 주요 담당 업무가 MLOps 이지만, 최근 회사 사정상 머신러닝 관련 업무가 많지 않습니다. 일하면서 배운점보다는 블로그에 제로부터 시작하는 MLOps 도구와 활용이라는 블로그에 시리즈 기사를 작성하면서 다시금 MLOps에 대해 정리하고 MLOps 각종 도구 활용법에 대해 좀 더 많은 지식을 쌓게 된 것 같습니다. 이 시리즈는 총 7장으로 기획 하였고, MLOps의 각 분야별로 많이 쓰는 (저한테 익숙한) 오픈 소스 도구들의 설치 방법 및 기본 사용법에 정리하는 것이 목표 입니다. 글또 8기 활동하는 동안 매 제출일 마다 1장씩 작성해서 출판하면 딱 맞아떨어져서 좋아했다가 아쉽게도 분량 조절 실패 및 게으름으로 인해 현재 계획했던 내용의 절반도 작성하지 못했습니다. 좀 많이 늦어지더라도 계획했던 내용까지는 끝까지 작성할 생각 입니다. (최종 데드라인은 2023년. 연내 다쓰고 개정까지 완료하기!)
회사 업무로는 MLFlow를 활용하여 간단한 모델 레지스트리 구축 및 REST API 추론 서비스를 만드는 일을 했습니다. REST API 추론 서비스 배포는 처음에는 FastAPI로 구현 하려다가 MLFlow에 모델을 REST API로 서빙 하는 기능이 있어서 편하게 했습니다. ( mlflow models serve 커맨드)

DataOps

데이터와 관련된 학습은 빅데이터를 지탱하는 기술 책을 스터디 했습니다. 분량과 깊이가 출/퇴근 시간에 보면 딱 좋을 책이어서 좋았던 기억이 나네요. 데이터 엔지니어링의 기본에 대해 정리가 잘되어 있어서 데이터 엔지니어를 꿈꾸는 예비 데이터 엔지니어나 주니어 데이터 엔지니어 분들께 데이터 분야의 기본 개념을 공부하는 목적으로 추천드립니다. 저는 IT 업계에 15년, 데이터 분야는 5년이상 경험을 가지고 있어서 책에서 뭔가를 많이 배웠다고 하긴 힘들었지만, 일하면서 자연스럽게 알게된 내용을 복습 & 정리하는 차원에서 좋았습니다. 빠르게 변화하고 발전하는 분야라 책 출판이 오래되어 (2018년) 최근 트렌드와 맞지 않는 내용들이 조금 아쉬웠습니다.
회사 업무로는 Airflow DAG로 배치 프로세싱을 돌리고 있는데, Airflow 운영하면서 발생한 이슈들을 해결하면서 배워 나가고 있습니다. 당장 생각나는 이슈는 빈번하게 실행되는 DAG에서 XCOM (Airflow의 데이터 전달 매커니즘)으로 전달되는 데이터가 너무 커서 Airflow PostgresQL 저장 공간이 다 차버렸던 이슈가 떠오르네요.
회사에서 다루는 데이터를 AWS Redshift Serverless에 올려서 쿼리를 돌려 보았는데, 클라우드 비용 절감을 위해 실 프로젝트에 적용을 못해본 것이 아쉬웠습니다. BigQuery, SnowFlake, Redshift 모두 PoC만 해보고 비용 문제로 적용은 못하고 있습니다. 데이터 웨어하우스 구축, 분석 솔루션 도입이 시급합니다! 라고하기엔 한푼이라도 아껴야하는 가난한 스타트업 + 분석할 데이터 크기가 크지 않은 회사라… → 클라우드 비용이 발생하지 않는 온프레미스 환경에 Trino를 설치 해두긴 했습니다.

DevOps

사실 2023년 상반기 회사 업무의 70% 이상은 DevOps 관련 업무를 했습니다. 온프레미스 및 AWS, GCP등 클라우드에 인프라를 구축하고, CI/CD 파이프라인 만들고, 그런 것들을 했었습니다. 예산이 넉넉한 회사가 아니다보니, 어떻게하면 클라우드 비용을 줄일수 있을지에 대한 고민, 교육, 업무를 조금 진행 했습니다. (FinOps)
인프라 프로비저닝에는 인프라를 코드로 관리하기 위해 TerraformAnsible등의 IaC 솔루션을 쓰고 있습니다. ArgoCD와 쿠버네티스 YAML 파일들로 GitOps도 하구 있구요. DevOps 방식은 그래도 나름 모던하게 구축 해놓고 잘 하는 것 같지만, 아무래도 여러 업무를 병행하는 와중에 혼자서 담당하는 분야다보니 디테일이 많이 아쉽습니다. 예를 들면, 인프라 초기 구축에는 힘들게 IaC 코드로 프로비저닝 해놓았는데, 운영 과정에서 웹 콘솔이나 CLI로 인프라 설정을 변경해서 IaC 코드가 무의미 해는 경우가 잦습니다. 인프라 코드가 웹 콘솔보다 더 편해지도록 노력 해야겠네요.
몇몇 프로젝트 진행하면서 사용자/어플리케이션 인증 관련 업무를 하게 되어 각종 SaaS 서비스로 인증 관련 보일러플레이트 코드를 작성하여 개발자 분들께 공유했습니다. Firebase Auth, Auth0, Cognito등을 해봤네요.

소프트웨어 개발

개인적인 관심도 있고, 저희 회사에서 프론트엔드 개발자분들이 가장 바쁘다보니, 가끔 프론트엔드 개발도 하고 있습니다. 저희 회사는 NextJS를 프론트엔드 메인 프레임웍으로 사용하고 있는대요. NextJS를 하면서 각종 웹 페이지 렌더링 방법 (SSG, SSR, CSR, ISR, On-demand ISR)에 대해 배우면서 웹 서비스를 어떻게 최적화 할지 고민했던 경험들이 흥미로웠습니다. 프론트엔드 개발 언어는 Typescript를 필요할때마다 배우면서 하고 있네요.
백엔드는 Kotlin 언어로 Spring Boot 프레임웍을 많이 사용하고 있는대요. Java, JVM에 대한 문화적 울렁증 (저는 유닉스 개발자 출신입니다.)이 있어서 직접 개발은 거의 하지 않고, 빌드 & 배포에 필요한 build.gradle.kts 파일과 application.properties 설정 파일을 수정하는 일이 많았습니다. jib 배포 이슈가 몇번 있어서 jib에 관련된 설정을 좀 살펴보았습니다.
프로그래밍 언어는 업무 특성상 Python을 가장 많이 쓰고 있어요. 데이터 파이프라인, ETL, 일회성 스크립트, 데이터 분석 및 머신러닝 notebook 작성등 익숙한 언어다보니 다용도로 쓰고 있어요. 2023년 상반기에는 FastAPI로 REST API 보일러플레이트 코드를 작성해서 올려놓았네요. (작년에는 Flit로 Python 패키지 보일러플레이트 코드를 만들었습니다.)
예전부터 Rust 프로그래밍 언어에 관심이 있어서 6월 중순부터 Rust 프로그래밍 언어 스터디를 진행하고 있습니다. 기본적인 언어 학습은 완료하였고, 현재는 각자 Rust로 토이 프로젝트를 진행하기로 하였습니다.

요약 및 하반기 목표

  • ChatGPT와 프롬프트 엔지니어링
    • 잘쓰고 있음
    • 프롬프트 엔지니어링 공부함
  • MLOps
    • 블로깅하면서 많이 배우면서 정리중
    • MLFlow 조금 써봄
    • MLOps 기본적인 아키텍처링
  • DataOps
    • “빅데이터를 지탱하는 기술” 책 스터디
    • Airflow 관련 각종 이슈들
    • OLAP 도입 못해 아쉬움
  • DevOps
    • 회사 업무로 가장 많이함
    • FinOps 조금 했음
    • IaC 활용도 아쉬움
    • 인증 관련 보일러플레이트 코드
  • 소프트웨어 개발
    • NextJS 조금함
    • Python FastAPI 보일러플레이트 코드
    • Rust 프로그래밍 배우는 중
 
하반기 목표는
  • 제로부터 시작하는 MLOps 도구와 활용 시리즈 마무리
  • Rust로 뭔가 재밌는거 만들어보기
  • 하던일 열심히 하기
입니다! 🔥🔥🔥