Tiangolo, the FastAPI
Tiangolo 는 FastAPI 를 비롯해 유명한 여러 오픈소스 도구들을 만든 프로그래머다. FastAPI 가 cool 하다고 생각해서, 문득 그걸 만든 사람은 어떤 사람일지 궁금해졌다.
그에 대해서
먼저 그의 웹페이지를 들어가면 다음과 같은 내용을 볼 수 있다.
Hey! I'm @tiangolo (Sebastián Ramírez) 👋
I'm a software developer from Colombia. 🇨🇴I currently live in Berlin, Germany. 🇩🇪
I have been building APIs and tools for Machine Learning and data systems, in Latin America, the Middle East, and now Europe, with different teams and organizations. 🌎
I created FastAPI, Typer and a bunch of other open source tools. 🚀
I like to build things with Deep Learning/Machine Learning, distributed systems, SQL and NoSQL databases, Docker, Python, TypeScript (and JavaScript), modern backend APIs, and modern frontend frameworks. 🤖
You are probably looking for my open source projects.
I'm currently dedicating a high percentage of my time to FastAPI, Typer, and my other open source projects. At the same time, I'm also helping a limited number of teams and organizations as an external consultant. If you would like to have my help with your team and product, feel free to contact me. 🤓
If my open source projects are useful for your product/company you can also sponsor my work on them. ☕
무슨뜻인지 모두 이해하셨겠지만, 간단히 해석해서 적자면 다음과 같다.
콜럼비아 출신, 베를린 거주.
기계학습 (Machine Learning), 데이터 시스템을 위한 API 와 도구들을 만들어옴.
FastAPI 같은 오픈소스 도구들을 만듬.심층 학습 (딥러닝) / 기계 학습 (머신러닝), 분산 시스템, SQL 과 NoSQL, Docker, Python, TypeScript, JavaScript, 현대의 백엔드 API, 그리고 현대의 프론트엔드 프레임워크와 관련한것들을 좋아함.
현재는 FastAPI 와 Typer 같은 오픈소스 프로젝트에 많은 시간을 사용중.
그가 어떤 삶을 살아온지가 궁금해서 찾아간것인데 별로 없더라. 그래서 혹시나 해서 사이트에 적힌 다른 링크들을 순차적으로 찾아보기로 했다.
- 최근 6년간, 새로운 도구와 기술들을 요하는 복잡한 문제들을 풀기 위해서, 분산 시스템에서의 기계학습과 관련된 알고리즘의 설계, 공부, 구현하는데 시간을 씀
- 15 살에 프로그래밍을 시작, 그 이후 멈춘적 없음
- 아메리카와 중동의 회사에서 많은 팀의 개발자들을 이끔
- TensorFlow, Keras, PyTorch, Caffe 등의 많은 딥러닝 프레임워크들을 사용했고, 기여했음
- 아무튼 엄청 많은 오픈소스 경험이 있다는듯
- 창의적으로 생각하는것과 혼자 공부하는것에 많은 역량을 갖고 있음
- 1997년부터 홈스쿨링
- 프로그래밍, 인공지능, 빅데이터 분산 시스템, 알고리즘, 머신러닝, 컴퓨터 비전, 암호학, 통계, 데이터 과학, 텍스트 마이닝, 웹기술, 소프트웨어 개발을 공부함
- 미국, 캐나다, 독일 대학들의 온라인 코스를 통해 학습함
대충 정리하자면, 여러 오픈소스에 기여하면서 잔뼈가 굵은(?) 사람인거같다. 오픈소스에 어떻게 기여하면 좋을지에 관한 글도 남긴게 인상깊다.
직접 해당 링크드인을 들어가보면 알겠지만, 정말 다양한 이력들을 갖고있다.
그가 만든 프로젝트들
FastAPI
그가 2018년의 크리스마스에 올린 트윗이다. 지금 얼마나 사랑받는 도구인지 생각해보면 이상할 지경.
이 날이 FastAPI 를 처음 공개한 날인지는 모르겠는데, 생각보다 트윗에서의 반응은 저조해서 놀랐다. 그래서 github star history 그래프를 보기로 했다.
이 그래프에서는 2020년 7월의 데이터부터 보여주는점이 좀 많이 아쉽다. 이 그래프를 통해서 알 수 있는것은, 꾸준히 우상향해서 점진적으로 인기를 끌어 모은것처럼 보인다.
사실 나는 처음에 어떻게 그 많은 star 들을 모았는지가 궁금했는데, 그 과정은 아쉽게도 찾지 못했다. 같이 일하는 분중에 꽤 유명한 오픈소스 개발자분이 계시는데, 그분의 말씀으로는 reddit 같은곳에서 홍보하다 어떤 특정 타이밍이 맞아 떨어지면서 (예를 들면 관련한 새로운 기술이 런칭 된다거나) 유명해졌다고 한다.
다른데로 잠시 이야기가 샜는데, 이 FastAPI 에 대해서 조금 더 파보자. FastAPI 의 공식 문서에서는, 다음과 같이 적혀있다.
FastAPI wouldn't exist if not for the previous work of others.
There have been many tools created before that have helped inspire its creation.
I have been avoiding the creation of a new framework for several years. First I tried to solve all the features covered by FastAPI using many different frameworks, plug-ins, and tools.
But at some point, there was no other option than creating something that provided all these features, taking the best ideas from previous tools, and combining them in the best way possible, using language features that weren't even available before (Python 3.6+ type hints).
다음의 부분에 집중해보자.
I have been avoiding the creation of a new framework for several years. First I tried to solve all the features covered by FastAPI using many different frameworks, plug-ins, and tools.
지난 몇년간은 새 프레임워크의 개발을 피해왔다. 처음에는 FastAPI 의 기능들을 여러 프레임워크, 플러그인, 그리고 도구들을 사용하며 해결하려 했다.
그래서 이 도구들이 뭘까 한번 그의 medium 과 트위터를 보았는데 이런 글을 찾을 수 있었다.
사실 FastAPI 의 공식문서에도 어느정도 언급되어있긴한데, 그는 원래 Flask 를 사용하던 사람이었던거 같다.
그래서 여러가지 FastAPI 에서 사용하던 도구들 (Pydantic, Starlette 등) 을 모아서 높은 성능의 백엔드 웹 프레임워크를 만든거 아닐까?
Typer
아까 언급한 그의 웹페이지에서 언급된 프로젝트 중 하나여서 한번 찾아보았다. CLI 도구를 엄청 쉽게 만들 수 있도록 도와주는 도구인듯하다.
SQLModel
SQL Database 를 Python Object 로 Interact 할 수 있도록 돕는 라이브러리라고 한다. SQLAlchemy 와 Pydantic 을 적극적으로 활용한 물건이라고 한다. ORM 비슷한 물건인거같고, 예제를 보니까 엄청 간단하더라. 지금 나는 Django 를 주로 사용하고 있는데 만약 FastAPI 를 사용한다면 즐겁게 사용해 볼 수 있을것같다.
Python 의 Type Hint 기능을 엄청 적극적으로 활용 할 수 있는것 같다. (Django 의 ORM 은 타입과 관련해서는 좀 구린편이다.)
훔쳐본 후기
많은 곳에서 교육받고 일한 기록이 있었고, 또 특히 FastAPI 가 엄청나게 빠른 백엔드 프레임워크라고 하길래 Computer Science 지식이 엄청나게 많아서 그런것들이 가능한 줄 알았다. 근데 딱히 CS 지식으로 인해서 저런 것들을 만들어 낼 수 있었던건 아닌거같다.
그의 FastAPI 가 빠르고, 유효성 검증과 관련한 부분에서 유리하고 자동 문서생성 기능을 가질 수 있었던건
- Starlette 라는 매우 빠른 ASGI 프레임워크에 기반했기 때문이었고,
- Pydantic 이 데이터 유효성 검증, 직렬화가 매우 빠른 라이브러리임과 더불어 Json Schema 기능을 갖고 있었기 때문이었다.
그러나 이런 의존성을 갖고 있다고 해서 당연히 FastAPI 가 의미 없고, Tiangolo 가 실력이 없다는 뜻은 아니다.
여기서 말하고 싶었던건, 혼자서 모든것을 풀어내는 기술적인 면보다는 문제 해결에 집중했던 그의 모습이다.
기술적으로 모든것을 아는것이 중요한게 아니라, 문제를 인식하고, 풀어내기 위한 적절한 기술을 찾고, 적절하게 적용하는것이 참 중요하다고 생각한다.
개인적으로 그런것들을 많이 느꼈던 프로젝트라면 키오스크 사용 도우미 YouEye 가 있다.
인공지능이 프로젝트의 핵심이지만, 정작 난 그 인공지능을 개발하진 않았다. 내부에서 어떻게 도는지도 모른다. 그래도 저런 의미있는 프로젝트를 해서 문제를 풀어 낼 수 있었다.
Tiangolo 가 어떤 삶을 살아왔는지, 그런 개인적인 부분에 대해서 궁금했던건데 아쉽게도 그런 내용은 찾아보기가 어려웠다. 가장 깊은 이야기는 이 사람이 15살때 부터 프로그래밍을 시작했고, 홈스쿨링을 했다는거 정도..
Tiangolo 를 보다보니 Mac 의 필수 도구가 돼버린, brew 를 만든 개발자를 처음 접했을 때의 느낌이 난다. 도구 그 자체로는 엄청난 기술을 가진것은 아니지만, 수많은 사람들의 문제를 해결했고 사랑받는 도구를 만들어냈다.
그런 의미에서 다음에는 brew 개발자인 Max Howell 이 될수도..? 문제해결-사랑받는 도구 개발과 CS 지식이 직결하지 않는다는 재미있는 사례도 있고 해서 이야기해볼 만한 재미있는것들이 많을것같다.
물론 난 꽤나 즉흥적인 사람이고, 이 글도 즉흥적으로 쓰기 시작한거라 주기적으로 적을 글인지는 모르겠다.
'Computer Science' 카테고리의 다른 글
그래서 주석을 달라고요 달지 말라고요? (0) | 2023.02.06 |
---|---|
jest-puppeteer 를 사용하면 커버리지 측정이 안된다! (0) | 2022.01.13 |
Django 를 하는데 Signal 이 왔다! (Signal 관련 유의 사항) (0) | 2021.09.01 |
Pytest 관련 짧은 팁 (0) | 2021.08.26 |
파이썬 함수가 mocking(patching) 이 안돼요! (0) | 2021.08.25 |