티스토리 뷰
무사히 완주했습니다.
과정은
1. 챌린지코스
2. 마스터코스
순서로 진행되었습니다.
1. 챌린지 코스
챌린지 코스는, 예열 작업이었던것 같습니다.
이때는 Backend.ai의 개발환경을 구축(시스템 빌드)하고, 실제로 실행해 보는 과정을 진행했습니다.
이 과정에서 저는 WSL2의 Ubuntu 상에서 빌드를 시도해보았고....
덕분에 온갖 고생을 다 하게 됩니다 ㅎㅎ
이때 정말 나도 맥북하나 사고싶다... 하는 생각 많이 들었죠
WSL상에서 돌리면서 아래와 같은 문제가 발생했습니다.
1_1. Root Directory의 구성이 Ubuntu의 그것과는 다르게 설정됨(sudo 명령어를 사용했을 경우)
https://github.com/lablup/contribution-academy-2021/discussions/23
1_2. Root Directory의 문제로 pyenv 명령어가 정상적으로 안먹음
1_3. WSL의 통신 체계를 알지를 못하니, backend.AI WebServer접근을 할 때 방화벽 문제가 발생
설치 완료후 localhost:8090 접속불가현상 · Discussion #86 · lablup/contribution-academy-2021 (github.com)
1_4. Docker의 실행 중 잦은 에러발생
https://github.com/lablup/contribution-academy-2021/discussions/76
등등등...
덕분에 초기에 굉장한 어려움을 겪었습니다.
+
이때 backend.AI 오픈소스는 어떤 구성으로 되어있고, 기술스택이 무엇으러 구성되어있는지 신정균 대표님한태 들을 수 있었습니다.
Backend.AI 오픈소스 기여 가이드 | Lablup Blog
"아니 이걸 어떻게 바닥부터 쌓아올려?"
라는 생각이 절로 들었습니다.
이때 중요하게 깨달은게, 각 오픈소스마다는 자신들만의 원리, 원칙이 있다는 점 이었습니다.
처음에는 이게 왜 중요한가 하는 생각이 들었는데, 다수의 사람들이 공동으로 작업하는 오픈소스 특성상 이러한 원리, 원칙을 정립하는것이 협업의 혼선을 막는 생각보다 중요한 요인이더라구요.
좋게 말해서 혼선은 막는거고, 터놓고 말하면 오픈소스가 개판나는걸 막는 중요한 핵심입니다.
2. 마스터코스
다행이, 이때쯤에 lablup에서 서버를 구매하여, 원격접속 상황에서 사용 가능한 환경을 구축해 줍니다.
덕분에, WSL이 아닌 real Ubuntu를 사용했는데.
아... 아무 문제없이 원큐에 설치가 돼?
덕분에, 이 이후에는 개발환경 구축에는 큰 신경을 쓰지않고 이제 컨트리뷰션을 진행하기 위한 작업에 들어갑니다.
컨트리뷰션은 크게 두가지고 나뉜다고 볼 수 있습니다.
2_1. 새로운 기능 제안
2_2. 기존의 문제, 개선점을 구현
저는 사용해 보다보니 새로운 제안은 크게 할게 없어보였고, backend쪽의 Issue를 해결하는 방향으로 잡았습니다.
2.1 file System 부분 Code Refactoring.
아무래도, Python 에만 익숙하고 backend.ai의 전체 흐름은 이해가 가질 않다보니, 국소적인 문제를 해결을 진행 했습니다.
기존 폴더제거/파일제거 로 나뉘어져 있던 cli를 하나로 통합한 부분 이었습니다.
오픈소스의 PR을 크게 나누면 아래처럼 진행됩니다.
1-> 원본소스를 fork
2-> fork된걸 clone
3-> clone한걸 고침
4-> git push로 fork본을 변경
5-> fork된것을 가지고 PR
6-> (Option, 여기서 문제)첫 PR을 올리는 유저는 repo 관리자가 허용
7-> PR올라온 repo를 시스템이 검사
8-> repo 관리자가 직접 확인
9-> PR 적용
6 부분이 정말 사람을 답답하게 만들었습니다.
프로젝트마다 다르지만, backend.ai의 경우 첫 PR을 올리는 유저는 repo 관리자가 허용을 해야지 7번의 진행이 됩니다.
안타깝게도 해당 기간동안 리드멘토이셨던 신정규님은 건강문제로 retire상태였고, 남은 두 멘토님들도 시간이 바쁘셔서 5번 -> 7번으로 가는데 상당시간 delay가 발생합니다.
그리고, 7번에서 syntax나 style이 맞지 않는다고 시스템한태 빠꾸를 먹습니다.
빠꾸는 먹을수는 있죠... 근데 문제는 그럼 3~5다시 진행하고, 6번에 다시 관리자한태 허용 요청을 해야되는겁니다 ㅠㅠ
아니... 바빠 죽을려는 사람들한태 또 이거 올렸으니 봐주세요오오! 하는게 참 쉽지가 않더라구요.
그렇게, 한 8번이었나? 빠구를 먹고, 그 이후에 PR이 드디어 올라갑니다!
문제는, 이 PR에 대한 피드백이 굉장히 오래 걸렸고, OCA 2021이 끝나고 나서야 적용이 되었다는거...
2.2 CLI Issue 해결 및 해결을 위한 전체 component 수정
이정도 진행했을 때 이제 마스터코스가 1/3 지나갑니다.
이제, 대충 어떻게 돌아가는지도 이해했겠다, 좀더 본질적인 문제해결에 기여하고 싶었습니다.
그래서, backend.ai manger의 cli의 issue하나를 해결하는 작업에 들어갑니다.
지나고 보면, 하나의 component가 아니라, cli부분을 고치면서 해당 cli를 통해서 Manager, Common, Agent 정보들이 모두 바뀌어야 하는 생각보다 쉽지 않은 작업입니다.
이때 사용된 기술들을 보면
Asyncio, AsyncRequests, Aiohttp, ETCD 등등이 있었으며, GraphQL이 포함되어 있었습니다.
component간 통신은 계속 시행착오를 거치면서 대충 이해를 했습니다.
문제는, 위 Issue가 cli를 통해서 docker image를 선택적으로만 업그레이드 하는 것이었는데, 최종적으로 docker image를 업데이트 하는 통신 부분을 결국 이해하지 못하고, 신정규 멘토님의 리뷰를 기다리고 있었습니다
lablup/backend.ai#67 진행현황 · Discussion #105 · lablup/contribution-academy-2021 (github.com)
근데 신정규 멘토님이 건강으로 거의 retire되시다보니, review도 받지 못하고, 새로운 issue도 잡조 못하고 한 2주정도가 흘러가게 됩니다.(이 이후에도 거의 못뵈었다죠 ㅠ)
그래서, 주기적으로 온라인 미팅을 진행하면서 자연스럽게 frontend쪽 issue를 해결하는 방향으로 선회하게 됩니다.
2.3 Web Server의 UI개선
간단하게, MLOps의 Seesion을 만들때, 만들어지는 정보가 마지막에 표기가 되지 않는 사소한 문제가 있었습니다.
이때는 JavaScript, TypeScript, WebComponent등이 사용되었습니다.
이전에 React.js를 쓰고 있던지라, Web표준으로 Componet형태의 문맥을 지원한다는 것을 처음 알게되었습니다.
이때 느낀게, 춘추전국시대인 Frontend 프래임워크가, 결국 비슷한 지향점을 가지고 발전하구 있구나... 싶으더라구요.
처음 해결은 간단했습니다. 정보를 저장하고, 이 저장된 정보를 callback으로 돌려준다.
문제는 web Component의 디자인이 생각보다 어려웠다는 점 입니다.
문제의 해결은 반나절만에 끝났지만, 이후에 결과물은 보다 직관적으로 바꾸자는 부분에서 꽤나 오랜 시간이 끌리게 되고, 마스터 코스 기간이 끝나게 됩니다.
제가 마무리 했으면 좋았을탠데, 뭐 대충 이렇게 해결하면 된다 draft만 남기고 frontend pro이신 분들이 해결하는게 더 좋지않을까 하는 생각(핑계)이 들더라구요 ^^;;
이 글을 쓰는 지금 보니깐 내가 바꿨던 코드에 더해서 다른분이 직관적으로 바꾼 모습을 봤는데.
제가 공돌이 감성이라 그런지 사실 비슷하지않나? 하는 생각도 들기도 했습니다.
2.4 코드베이스 세미나(about Asyncio)
마지막으로, 코드베이스 세미나도 진행 했습니다.
다른분들은 앞에서 기술스택에 대한 코드베이스 세미나를 진행 해주셨습니다.
(Session의 흐름이나, lifecycle과 같은)
저는, 마지막에 진행했던 터라 기술스택보단 Backend.AI의 근간인 Asyncio에 관해서 코드베이스 세미나를 진행했죠.
이부분이 많이 아쉬운게, 좀더 빨리 진행했더라면 Asyncio에 대한 이해가 좀더 빨랐고
컨트리뷰션을 좀더 원활하게 할 수 있었을탠데... 하는 아쉬움이 남았습니다.
3. 아쉬운점
3_1. 챌린지 코스의 구성
챌린지 코스 당시에 WSL덕분에 다양한 실수를 해가면서, 좀더 이해를 높일 수 있긴 했습니다. 그래도, 좀더 원활하게 개발환경을 구축할 수 있는 환경이 미리 준비되면 좋겠다 라는 생각이 들었습니다.
아마도, 21년에 사용한 서버를 이용해서 22년에는 보다 원활하게 지원을 받을수 있지 않을까싶으네요 ^_^
3_2. 바쁜 멘토님들
멘토님들이 많이 바빠요... 분명 내가 도와드리는게 멘토님들의 일을 줄일 수 있는 부분인데, 이걸 대응해주지 못해서 계속 일이 쌓이는 악순환이랄까요?
2022년 멘토님들은 좀더 시간적 여유가 있었으면 좋겠더라구요.
3_3. 온라인 모임
오프라인 모임을 한번도 못해본게 너무 아쉬웠습니다. 올해 배민스터디를 진행하면서 확실히 오프/온라인 모임의 차이점이 느껴지더라구요. 올해 OCA2022는 오프라인 모임도 활발하다고 하니, 기대해봐도 될것 같습니다.
이상! 올해 2022 OCA신청하러 갑니다!
https://www.oss.kr/notice/show/cf492935-9cf2-4755-98d8-e1ea6aae7abd
'컨트리뷰톤 > backend.ai' 카테고리의 다른 글
개발환경 구축하기(WSL) (0) | 2021.08.06 |
---|---|
개발환경 설정해보기 (0) | 2021.07.12 |
- Total
- Today
- Yesterday
- hash
- stack
- 알고리즘
- Greedy알고리즘
- 코딩테스트
- SIMD
- 완전탐색 알고리즘
- C++
- git
- 이분탐색
- 사칙연산
- heap
- Search알고리즘
- 프로그래머스
- 동적계획법
- Sort알고리즘
- GDC
- 컴퓨터그래픽스
- 병렬처리
- AVX
- Python
- prime number
- 자료구조
- 분할정복
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |