시리즈
- 수직개발 vs 수평개발
- ✅ Open Source vs 유료 기성 소프트웨어 vs 자체 제작
- 백엔드 아키텍쳐 설계시 고려 3요소
- 개발자가 Yes 보다 No를 외쳐야하는 이유
- 귀찮지만 필요한 Doucmentation & Issue Tracking
- 실제와 비슷한 수준의 테스트
오픈 소스는 왜 쓰는가?
무료 + 적은 노력 + 빠른 개발
⚠️ 좋은건 다 갖춘것 같은데 무지성 오픈소스 사용은 후폭풍을 불러올 수 있다.
오픈 소스에게 통수맞은 일
위 오픈소스 리포지토리의 공식 문서나 git 의 README.md 파일을 보면
개념, 예제파일, 사용법이 나와있다. 예시를 한번 보자
[ Video.js 페이지 中 ]
그럼 우린 "옳다구나!" 하고 빠르게 끌어다 써본다.
문제는 직접 쓰면서 알게된다.
아니 다 되는 줄 알았는데 이거 안되네?
video js 에서는 HLS 코덱 실행시 심한 버퍼링 현상이 있었고
media element 는 HLS 코덱은 정상실행되나 레이어를 여러개 띄울 수 없는 문제가
react - youtube 는 풀스크린 상태에서 가로 세로모드 전환시 재생이 끊기는 문제가 있었다.
결국 프론트엔드 개발자는 이 3가지 모듈을 케이스별로 다 따로 쓰는 방식을 채택했다.
그래도 문제가 많다.
커버해야할 대상 수 == OS * Browser * 사용 Library 수 이다.
모든 OS 및 브라우저에서 정상작동하는 오픈소스인지 검증이 필요하다.
또, 개별 오픈소스에서는 동작하는데 오픈소스간 이어 붙이다가 발생하는 새로운 문제도 있다.
복잡도와 검수 규모가 급격히 증가한다.
범용 오픈소스는 책임자가 없다. 기껏 만들었는데 "안되면 말고"에 통수맞을 수 있단 얘기다.
돈이 있다면? 그냥 유료 정품 소프트웨어를 쓰자.
돈내고 쓰는 소프트웨어는
비용 만큼의 품질을 회사가 보장한다.
앱 개발을 예로 들어보겠다. 창업자들이 크로스 플랫폼 개발자를 고용하는 방법을 흔히 채택한다.
iOS, Android 개발자 채용 부담이 크다는게 그 이유다.
React-Native, Flutter 를 선택하면 매우 효율적일까?
오픈소스와 비슷한 맥락으로 하이브리드 웹앱도 단점이있다.
- 성능 저하
- 더 많은 버그
- 잦은 업데이트로 인해 비정상적인 동작 발생
iOS와 안드로이드는 버전 업데이트가 매우 잦은편이다. 이에 따라 React-Native 도 맞춰서 업데이트 될 때 까지 기다려야한다. Flutter의 경우 저렴하게 개발해도 유지보수 시 Flutter 개발자 인력풀이 좁아 사람을 못 구하기가 어렵다. (React-Native도 많지가 않다.) 결국엔 처음부터 iOS와 안드로이드 개발자를 채용한 것보다 비용과 시간이 더 들어갈 수 있다.
"이것도 되고 저것도 되요"는 의존성 문제가 커지기 쉽다.
구글은 안드로이드 크롬을
애플은 macOS, iOS와 사파리를 전격 지원한다.
플랫폼 의존성이 늘어날 수록 안정성은 증가한다.
∴ 비용 만큼의 품질을 회사가 보장한다.
소프트웨어 종류별 비교
항목 | 오픈 소스 | 상용 소프트웨어 | 자체 개발 |
소요 시간 | 적음 | 적음 | 많음 |
비용 | 무료 | 유료 | ? |
품질 | 천차만별 | 좋음 | 개발 인력에 비례 |
📝 결론
오픈소스 사용시 이슈와 한계를 최대한 조사해야함.
=> github의 Issue tracker 를 확인할 것.
=> 한계가 크다고 판단되면 유료 상용 소프트웨어를 구매하는 것이 좋음.
=> 고급 인력과 시간이 확보되있다면 자체 제작이 방법일 수 있음.
'생각 뭉치 ' 카테고리의 다른 글
개발자에게 How보다 Why가 중요한 이유 (0) | 2024.03.26 |
---|---|
소프트웨어 '설계'는 왜 해야하는가 (0) | 2023.12.01 |
오버엔지니어링 하지마라 (0) | 2021.12.19 |
프로젝트에서 얻은 교훈 (1) 수직 vs 수평개발 (0) | 2021.10.06 |
Zero Pay(제로페이) 원리, 사용방법 (0) | 2019.12.10 |