나는 내 학습목표를 달성하기 위해 무엇을 어떻게 했는가?

  • 강사님께서 금번 3주간의 MLOps 프로젝트 기간동안 외에는, 전체 Upstage AI Lab 7개월 기간 인프라를 만질 수 있는 기회가 없다고 하셨다.

  • 또 배웠던 mlflow, FastAPI, Airflow, Docker에 추가로 본인 포트폴리오에 넣고 싶은 걸 다 넣어보라고 하셔서 그 동안 알고 싶어 해오던 모든 것을 다 시도해 보고 싶었다.

  • 전체 영역을 다 알아야 하지만, 자연히 내가 그 동안 관심있었던 HTTP Request와 관련된 FastAPI 중심으로 학습이 시작되었다.

  • HTTP Request 학습

    • FastAPI (Swagger)
      • Pydantic, Python Decorator
    • Python Requests Library
    • HTTP Request, Open API
    • API 연결(네이버 메일 보내기, 네이버로 로그인하기, 네이버 뉴스 검색 API, X, Solar Pro, toss payments 결제창, DynamoDB)

나는 어떤 방식으로 모델을 개선했는가?

  • 각 도구 별(mlflow, airflow, http, requests 등) docs에 있는 quickstart를 참조하여 기초 원리부터 하나하나 개발하였고, 그때그때 생각나는 기능들을 하나씩 더해나갔다.

내가 한 행동의 결과로 어떤 지점을 달성하고, 어떠한 깨달음을 얻었는가?

경영학과 졸업생으로 6개월 웹부트캠프를 마치고 4년간 IT 회사에서 절반의 개발자로, 컨설턴트로, 행정, 인사 등으로 여러가지 주워들은게 많았지만, 실제로 "오로지 한 사람의 개발자"로서 프로젝트에 참여해 본 적은 처음이었다. 자꾸 예전에 하던 방식으로 전체 프로젝트가 어떻게 하면 성공할까, 놓치는게 있지는 않은지 하는 마음으로 프로젝트에 임하였는데, 개발자의 팀웍과 비 개발자의 팀웍에는 있다고 생각이 들었다. Agile선언에서 작동하는 소프트웨어가 문서들보다 유의미하다는 말이 있었는데, 정말 이 세계에서는 동작하는 소프트웨어가 모든 것을 덮어주는 것 같다. 그러기 위해서는 손 걷어붙이고 바로 개발하는 사람이 제일 앞서나갈 것 같다.

예전 회사에서 주변에 개발자들을 보았을 때 어떻게 저렇게 현실세계에 맞지 않는 사고방식을 가질 수가 있지라는 생각이 들었던 사람들이 있었는데, 지금 보니, 이렇게 매번 Working 하는 프로그램을 만들었냐에 의해서만 평가받고 보상받는 시스템에서 길들여지다보면, 누구라도 사람에게는 무관심해지고 컴퓨터의 사고방식을 이해하는 데에 중점을 두게 되면 비사회적 성향으로 변할 거라는 생각이 들었다.

경영학과에서 생산, 물류는 선택과목이고, 재무, 인사, 마케팅, IT, 경영 등이 필수과목이었다. 사실 생산운영관리는 전공선택이라 안 들었다. 생산이란 시골에서 농부가 밭을 가꾸거나, 공장에서 노동자가 무언가를 조립하거나, 나와는 전혀 무관한 분야라고 생각을 하고 있었는데... 개발을 배우다보니 개발이 경영 전체 관점에서 생산자와 같다는 생각이 들었다.

  • 개발자 == 생산자.
  • 만약 이 생산자가 직거래 방식으로 고객과 바로 연결될 수 있다면 수익이 커지겠지 == 스타트업.
  • 유기농으로 소비자의 건강을 생각하며 잘 생산하는 것 == 클린코드, 보안, 고가용성, 기획이 강한 소프트웨어.
  • 가치를 제조해내는 사람
  1. 업무별 조직별 협업방식 차이
    이전 회사에서 컨설턴트로 4년간 있었는데, 거기서는 수없는 커뮤니케이션이 쉴새없이 일어났었고, 그렇게 해서 하나의 통합된 보고서가 출간되었는데, 개발업무는 커뮤니케이션의 비중이 훨씬 낮고 그 보다는 작동되는 소프트웨어가 도출되는 것이 훨씬 중요시 된다는 깨달음을 얻었다. 개발의 특성상 깊이있는 생각을 통해서 결과물이 도출되는 경우가 많고 팀내 잦은 커뮤니케이션은 오히려 개발성과에 악영향을 미칠 수가 있다. 협업자 기획자로서의 협업이 소통을 통한 작업으로 개인과 팀소통 비중이 5:5였다면, 개발자로서는 8:2정도로, 개발한 내용의 방향성을 간단히 집어주는 커뮤니케이션을 중시해야 한다. 개발하는 과정이 정신적으로 스트레스가 많고 고통스럽고, 또한 그 외 외부적인 일정이나 행사들을 놓쳤을 때 번거로운 부분이 싫어서, 외부적인 부분을 먼저 끝마무리하고 깊이있는 작업에 돌입하려고 했었는데, 그러다보니 막상 중요한 개발 부분을 놓쳐서 팀에 손해를 입힌 것 같다. 소중한 것을 먼저하라는 격언, 또는 스케쥴에 큰 돌을 먼저 넣으면 자잘한 돌들은 나중에 넣을 수 있지만, 자잘한 돌들을 먼저 넣으면 큰 돌을 넣을 수 없게 된다는 말이 있었는데, 개인작업과 외부작업 중에 내가 해야만 하는 개인작업을 가장 우선으로 하는 마인드셋을 탑재해야 할 것 같다.
  2. 협업 마인드
    또한 대인관계에 커뮤니케이션에 있어서도 마치 자판기에 동전을 넣으면 캔 음료수가 나오고, 컴퓨터에 request를 넣으면 response가 1초 안에 나오는 비현실적인 기대를 갖고 있던 것 같다. 그러한 기대는 개인작업하면서 컴퓨터에만 기대하는 게 마땅하다. 내 작업이 다른 사람의 response에 dependency (의존성)을 갖고 있다면, 내 생산성의 최고는 다른 사람의 response 시간과 품질에 달려있다. 소프트웨어 개발 방법론에 있어서도 loosely coupled하라고 했었는데, 내가 타인의 작업을 통제할 수 있는 위치가 되기 전에는, 내 개인 작업프로세스에 다른 사람의 참여 예상분을 제거하여야 내 작업속도와 한계가 방해받지 않는다. 뭐든지 스스로 하려는 습관을 들이자.

전과 비교해서, 내가 새롭게 시도한 변화는 무엇이고, 어떤 효과가 있었는가?

  • 강사님께서 여러번 언급하신 구글의 MLOps 가이드에 비추어 현재 우리가 몇 단계이고 앞으로는 무얼 해야 하는지 도표를 만들고 따라잡으려 했지만 거기까진 못했다.
  • AWS와 Microsoft의 CAF (Cloud Adoption Framework)에 따라 단계별로 Microservices 형태로 클라우드로 이관하는 작업도 학습하고 싶었지만 거기까지 다다르지 못했다.

마주한 한계는 무엇이며, 아쉬웠던 점은 무엇인가?

  • 호기심 기반으로 성능을 늘려가다 보니, Airflow와 Docker를 개념들만 들었고 실제로 만들어보지 못한 점이 매우 아쉬웠다. 아직 온라인 강의를 못 봤기에 보면서 빠르게 따라잡아야겠다.
  • Streamlit이 javascript 라이브러리를 불러올 수 있는 방법도 있고 해서, 빠르게 AI 모델로 데모를 개발할 수 있지만, 실제 Production 환경에서 서비스 하기 위해서는, 결제창, OAuth 등 여러 모듈을 파이썬 형식인 Streamlit에 붙이기에는 제약이 있어서 쉽게 입히지 못했다.
  • 토스결제창도 연결하고 싶었는데, 사업자등록증을 내야 한다고 해서 실업급여, 취업지원금 등 제약이 많을 것 같아 진행하지 못했었다.

한계/교훈을 바탕으로 다음 경진대회에서 스스로 새롭게 시도해볼 것은 무엇일까?

  • Streamlit .py 파일에 네이버로 로그인하기, 결제모듈 등 HTML 소스를 결합하는 게 어렵다 보니 향후에는 React나 Next.js를 하고 싶다고 했더니, 강사님께서 실무에서 간단하게 데모 만들어보는데 Streamlit를 많이 쓰신다고 하셨다.
  • 또한 어제 봤던 유투브에서 React나 Javascript 시각화 라이브러리를 Streamlit에서 끌어오는 방법이 있고, 잘 되는 케이스는 일주일 웹개발할 것을 Streamlit으로 한시간안에 개발한다고 하셨다. 그래서...
  • 현재까지 진행했던 Streamlit에 기초부터 하나하나 쓸만한 수준까지 올려서 향후 프로젝트에서는 Streamlit에서 온라인으로 배포할 수 있도록 하고 싶다.
  • OAuth2.0 기능을 꼭 넣고 싶었는데, 다음 번 프로젝트까지 !인증의 전문가!가 될 정도로 지식경험을 축적하고 싶다.
  • 결국 서비스화에 필요한 항목들을 더욱 고도화 시켜서 부트캠프 마무리 때에는 쓸만한 수준의 OAuth2.0 로그인 가능한 AI Streamlit 데모 사이트를 만들 수 있는 포트폴리오를 가지고 싶다.

하고 싶었지만 시간상 하지 못해서 다음에 해보고 싶은 점

  • 프론트(React, Next.js on Vercel)
  • Reverse 웹서버 + FastAPI on Docker or Python Lambda/Docker
  • OAuth2.0 모듈 다 붙여보기 (Naver, Kakao, Google, Linkedin, Microsoft, Meta, X 등)
profile
AI 클라우드 웹개발자

0개의 댓글