오픈소스 SWC 강동윤 개발자 웹 세미나 후기

권태형·2023년 6월 2일

이것저것

목록 보기
7/9
post-thumbnail

6월1일 오후 8시 - 9시 한 시간동안 SWC를 개발하신 강동윤 개발자님의 웹 세미나를 신청해서 실시간 신청했다.

방청 계기

솔직하게 SWC가 무엇인지 모르지만 강동윤 개발자님이 국내 github star rank 2위에 계시며, 현재 대형 클라우드 포스팅을 진행해주는 해외 기업 Vercel에 재직중이라는 문구를 보고 어떻게하면 저렇게 초대형 IT기업에 들어갈 수 있었는지 경험이나 참고할만한 내용이 있는지 알아보기 위해 신청하게 되었다.

Vercel

나는 프론트앤드 개발자가 아니지만 같이 협업을 진행하면서 프론트앤드 개발자 분들이 대부분 Vercel을 이용해서 배포를 진행했던 것을 알고 있었다. Vercel은 자동화가 굉장히 잘 되어있기 때문에 CI/CD까지 그냥 처음 본인 프로젝트 깃허브 주소만 따서 넣으면 이후 master브랜치에 marge했을때 자동으로 반영해주는 기능까지 갖추어 져있다. 또한 현재 블로그를 쓰고있는 이 Velog의 메인페이지의 트랜드 포스팅을 보면 꼭 빠지지 않는 내용이 Next.JS인데 이 Next.JS프래임워크도 Vercel에서 만들었다고 한다.

Vercel에 대해서 자세히 알아본 적이 없어서 Vercel은 프론트 앤드만 사용할 수 있는 건가? 왜 백엔드는 Vercel을 사용하지 않는 거지 CI/CD파이프라인 까지 모두 구축되어 있다는데?? 어떻게해서 저런 큰 기업에서 컨택이 왔는가? 등이 궁금하기는 했다.

SWC

처음 강동윤 개발자님은 옛날 버전의 브라우저에서는 지원하지 못하는 최신문법의 자바스크립트 문법을 변환시켜주는 트랜스파일링을 도와주는 도구(?)or 프로젝트인 바벨을 사용하는데 있어서 성능이 현재에 비해 많이 뒤쳐져있어 불편함을 느껴서 바벨을 Rust를 이용해 바벨을 통째로 재구현하는 오픈소스 프로젝트로 SWC를 만들게 되었다고 한다.

누가 시키지 않고 본인이 자발적으로 SWC프로젝트를 만들다가 외부에서 해당 소스코드를 사용하고 싶어하는 큰 기업들에게 컨택을 받으신 경우였다.

현재의 SWC프로젝트 코드는 35만줄이 넘는다. 바벨보다 규모가 커졌을 수 있다고 가정하더라도 바벨만을 Rust로 재구현 한다해도 30만줄이 될텐데 내가 지금 짜고있는 코드는 겨우 몇천줄? 천 몇백줄? 정도밖에 되지 않는데 그저 빛. 대단하다고 생각했다.

SWC프로젝트를 혼자 진행하신건 2년이 조금 넘는다고 하셨지만, 실질적인 개발은 중2때부터 시작하셨다고 한다. 그때부터 개발에 재미를 붙이셨을까? 나는 그때 그저 친구들과 뛰놀고 게임만 플레이도 재밌었는데... 중2부터 대학3학년까지 진행했다면 군대를 다녀오셨다는 전재로 무려 개발10년차가 된다.

정말 10년동안 내가 좋아서 몰입해서 한가지를 깊게 팔 수 있는 사람이 얼마나 있을까? 강동윤 개발자님께서 직접 "나는 그때 SWC에 미쳐있었다"라고 표현했었다. 나는 하다못해 1년을 몰입해 본 적이 있을까?라는 생각을 해본다.

오픈소스

오픈소스라는 키워드는 많이 들어보았고, 실제로 부트캠프 동기들 중에 이미 취업을 한 동기는 "국가 프로젝트로 오픈소스를 받아서 해석한 후에 자기들 프로젝트에 적용시키는 작업을 하고 있다." 라는 이야기도 들었었다.

하지만 나는 실제 오픈소스가 그냥 공개된 소스코드? 정도로만 이해하고 있었는데, 강동윤 개발자님께서 정리해 주신 오픈소스는 "어떠한 문제가 발생했을 때 해당 문제를 해결하고 해결한 이 소스코드를 공개하는 것"이라고 정리해 주었다.

일반적으로 소프트웨어의 소스 코드는 개발자에게만 공개되고, 사용자는 해당 소프트웨어를 이용할 수 있지만 소스 코드를 볼 수는 없다. 하지만 오픈 소스 소프트웨어는 개발자뿐만 아니라 누구나 소스 코드에 접근할 수 있으며, 필요한 경우 소스 코드를 수정하거나 개선할 수 있다.

강동윤 개발자님께서는 "오픈소스에 대해서 너무 크게 생각하지말고 부담을 갖지마라."라는 말을 했었다. GPT에 물어본 오픈소스 프로젝트의 대표적인 예시는 리눅스(Linux), 아파치 웹 서버(Apache HTTP Server), MySQL, 파이썬(Python), 자바스크립트 엔진(V8) 등이라고 하였는데. 와우! 너무 크군!이라 생각하지만, 강동윤 개발자님께서 정리해주신 오픈소스에 대한 정의를 생각해보면 "npm에 올라온 라이브러리 패키지들도 누구나 설치할 수 있고 공개된 소스코드이기 때문에 대부분 오픈소스로 되어있지 않을까?"라는 생각을 할 수 있게 되고,

따지면 moment라이브러리나 기타등등 조금 더 짧은 라이브러리들도 존재하기 때문에 오픈소스가 큰 것도 있겠지만, 정말 작은 함수 단위를 가진 오픈소스도 존재한다고 생각할 수 있겠다.

오픈소스 프로젝트 개발을 함에 있어서 컨트리뷰터 등 내가 만든 오픈소스를 관심있게 봐주는 사람이나 참여해주는 사람, 사용을 원하는 사람 등이 생겨야 해당 오픈소스 프로젝트가 유의미할텐데, 오픈소스 프로젝트에서 이러한 생태계를 구성하기 위해서는 누가 봐주지 않더라도 누군가 참여해 주지 않더라도 일단은 최소 1년은 혼자 개발한다고 생각해야 한다고 한다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글