PyArch - 파이썬에 아키텍처 패턴 적용하기
안녕하세요, 저는 ‘PyArch - 파이썬에 아키텍처 패턴 적용하기’ 스터디를 빌드한 김정훈입니다. 이 글에서는 2024년 상반기(8기)에서 제가 진행할 스터디에 대해서 간단히 소개합니다.
PyArch - 파이썬에 아키텍처 패턴 적용하기 소개
머신러닝에 입문하실 때, 어떻게 파이썬 언어를 공부했는지 기억하시나요?
대부분 Jupyter Notebook을 통해서 실행을 했을거라고 생각합니다. Jupyter Notebook은 웹 기반의 대화형 컴퓨팅 환경에서 코드를 작성하고 실행하면 그 결과를 실시간으로 볼 수 있게 해줍니다. 실시간으로 변수에 어떤 값이 들어있는지 찍어보면서 확인하고, 위에서부터 아래로 쭉 다 실행을 하거나, 내가 원하는 Cell만 실행을 합니다.
공부를 하거나, Kaggle이나 Dacon과 같은 대회에 나갈 때, 열심히 Jupyter Notebook에서 코드를 작성하고 Markdown을 이용해서 최소한의 구분을 하거나 최소한의 코드 단위를 묶어서 함수로 관리하거나 본인만의 방식을 이용해서 그나마 재사용성과 가독성을 높이려고 노력했을거라고 생각합니다.
하지만 이런 방식으로 진행을 해도 내가 언제까지 진행을 했고 잘 작동을 하고 있는지 확인하기 어려울 때가 많고,
코드를 수정하더라도 어딜 수정해야 할지 찾기가 힘들다거나,
특정 실험 목적에 맞게 추가한 칼럼들이 학습에 들어가지 않게 코드에 다시 주석처리를 하고 처음부터 실행을 했지만 잘못 실행해서 그 칼럼을 포함한 상태로 학습을 했다거나,
이런 다양한 문제들을 겪었지만 그냥 다음에 실수안해야지 하면서 넘어간 적이 있나요?(제 경험담입니다…)
딥러닝 영역으로 넘어오면, 조금 더 복잡하게 데이터를 처리하고 관리하기 위해서 PyTorch나 TensorFlow 등의 프레임워크와 파이썬 실행파일(.py), 그리고 클래스를 이용해서 프로젝트를 구성한 것을 확인할 수 있습니다.
하지만 이런 코드들도 하나의 클래스에 너무 많은 책임과 역할을 가지고 있어서 한눈에 알아보기 어렵지 않았나요? 아니면 내가 작업한 딥러닝 코드를 이렇게 프로젝트로 관리하려고 하는데 어떤 단위로, 어떻게 나누고 어떻게 구현하고 어떻게 테스트해야 하는지 힘들었던 경험이 있으신가요?
(이것도 제 경험담입니다…)
저와 같은 경험을 조금이라도 해보신 분들은 이제 저와 함께 아키텍처 패턴에 관해서 공부할 필요가 있습니다. 아키텍처 패턴을 통해서 소프트웨어 설계(모델 학습이나 배포 등)에서 공통으로 발생할 수 있는 문제를 해결하고 설계부터 리팩토링과 유지보수가 쉬운 코드를 작성해서 공부하는 단계에서 시간이 많이 들지만, 익숙해지고 나면 생산성이 많이 올라가는 것을 느낄 수 있을 거라고 믿고 있습니다.
이 스터디는 단순히 머신러닝/딥러닝 코드를 빠르게 짜는 그런 과정이 아닌, 머신러닝/딥러닝을 포함해서 파이썬으로 만든 소프트웨어에 적용할 수 있는 아키텍처 패턴에 관해서 공부하고, 우리가 평소에 자주 작업했던 부분에 적용하는 것을 목표로 하는 스터디입니다. 이 스터디를 다 마치고 난 후에는, 완벽한 클린코더나 아키텍처 마스터가 될 수는 없지만 내가 작성했던 코드가 어떤 문제를 가졌는지를 이해하고, 무엇을 개선해야 할지 깨달을 수 있는 사람이 될 거라고 믿고 있습니다.
*가짜연구소 8기에서 진행되는 프로젝트는 계획표)를 참고해주세요.
빌더 소개
안녕하세요, 현재 저는 IHFB(아이헤이트플라잉버그스)의 데이터팀에서 일하고 있는 김정훈이라고 합니다.
스타트업에서 일하면서 데이터의 여러 영역에 거쳐서 공부를 하고 적용을 해나가고 있습니다.
https://www.notion.so/chanrankim/1a68b35d3e764c5682791627a7563ff1
프로젝트 계획
매주 일요일 밤 10시에 Discord나 Zoom을 통해서 약 한시간 가량 스터디가 진행될 예정입니다.
다음 Architecture Patterns with Python 책을 통해서 파이썬 아키텍처 패턴에 대해서 공부할 예정입니다. 이 책을 토대로 아키텍처 패턴에 대해서 이해하고 본인이 작성했었던 코드에 어떻게 적용을 할지 고민하고 해보는 것이 주 목적입니다.
- 진행 & 발표
- 각 주차별 목표에 맞는 챕터까지 공부를 다 같이 해옵니다.
- 출석체크를 위해 실명으로 참여 부탁드립니다.
- 온라인에서 여러분을 만나는 환경이므로 웹캠을 꼭 준비해 주세요~
- 발표자는 OT 날 선정 (참여 인원에 따라 1인 2~3회 정도 발표 예상)
- 발표자는 발표 내용 정리 및 예시 코드 설명을 준비해야 합니다.
- 발표 자료는 노션에 정리 / 공유
- 학습 활동 (필수)
- 책에 있는 예시 코드를 정리하거나, 본인의 코드에 실제로 적용해보기
- 주차별 Chapter 학습 및 개인 블로그/깃허브에 정리 (발표 주차는 필수, 그 외 권장)
- 어려웠던 부분 / 질문 등 질문 페이지에 정리
- 내용을 본인만의 언어로 요약 및 정리
주차별 목표
현재 정해진 주차별 목표는 다음과 같습니다. 팀원분들과 이야기를 통해서 스케쥴은 조정이 될 수 있습니다. 2~3주차를 진행하고, 스터디의 일정에 대해서 같이 논의해볼 예정입니다. (해당 스터디는 청강이 가능합니다.)
- 1주차 - OT (스터디 소개/방향 논의, Ice Breaking)
- 2주차 - Chapter 0, 1. 도입 & 도메인 모델링
- 3주차 - Chapter 2. 저장소 패턴
- 4주차 - Chapter 3, 4.막간: 결합과 추상화 & 서비스 계층
- 5주차 - Chapter 5, 6 TDD & 작업 단위 패턴
- 6주차 - Chapter 7. 애그리게이트와 일관성 경계
- 7주차 - 쉬는 주 + Chapter 7까지 정리
- 8주차 - 실전 프로젝트 1 - 간단한 머신러닝 모델링 과정에 아키텍처 패턴 적용하기
- 9주차 - Chapter 8. 이벤트와 메시지 버스
- 10주차 - Chapter 9. 메시지 버스 적용
- 11주차 - Chapter 10, 11. 커맨드와 커맨드 핸들러 & 이벤트 기반 아키텍처
- 12주차 - Chapter 12. 명령-질의 책임 분리
- 13주차 - Chapter 13, 14. 의존성 주입 & 맺음말
- 14~15주차 - 실전 프로젝트 2 - 간단한 모델 서빙에 아키텍처 패턴 적용하기
- 16주차 - 회고 및 최종 리뷰