어제 오늘 기술 스택을 정하면서 알아낸 것 은 결국 언어나 프레임워크끼리 기술적으로 비교우위를 가르는 것은 거의 불 가능 하다는 것이다. 모든 것을 가지고 있는 완벽한 언어라는 것은 없고 각자 장점과 단점이 있기 때문이다. 그렇다고 단점이 엄청나게 치명적인 것은 딱히 없는 것 같고. 인기있는 언어나 프레임워크 경우 개인적인 기준으로는 5점 이내에 오차범위인 것 같다.
상황가정을 해보자 나는 spring을 쓰고 싶고 상대방은 python을 사용하고 싶다. 이유는 서로 1개의 언어 밖에 사용을 해보지 않아서이다. 그렇다면 생존을 위해서 자신이 사용할 줄 아는 언어를 사용해야 한다고 할 것이다. 당연하다. 지는 쪽은 사실상 손가락만 빨다가
회사에서 쫒겨날 수도 있다. 그렇다면 무조건 이기는 필승법은 무엇일까? 주먹이 쌔면 된다.
오늘 정해본 기술스택은 프론트엔드와 백엔드쪽 언어인데 기술적으로는 의미가 없고 내가 만들 포트폴리오의 도메인과 상황을 고려 해서
나름 작성해 보았다.
백엔드 : 자바 spring boot
객체 지향 프로그래밍 언어이다. 쇼핑몰은 관리자 페이지까지 하면 도메인모델들이 많이 나올 수 밖에 없는데 객체지향 프로그래밍은 이런 복잡한 프로그램에서 시너지를 낼 수 있다.
스프링은 IoC컨테이너를 가지고 있어 DI(의존성 주입)이 쉽고 복잡한 엔터프라이즈용 프로그램을 만드는 데 사용하는데 쇼핑몰은 관리자 페이지까지 하면 복잡한 도메인이라고 판단했다. 또한 테스트 코드도 어느정도 만들 줄 알기 때문에 스프링으로 선택했다.
또한 한국에서 자바의 생태계는 모든 언어들중 단연 탑이기 때문에 공식문서를 참고하거나 자료의 양과 딥한 자료까지 찾을 수 있다.
파이썬
파이썬은 AI, 머신러닝 등 데이터와 관련된 작업에 채용을 많이 하는 언어인데 현재 내 포트폴리오에는
머신러닝이나 AI같은 기술을 사용할 경우가 없다. 러닝 커브가 낮다고 하지만 테스트 코드를 만드는 방법이나 문법에 대해 문외한 이기 떄문에 자바를 선택하는 것이 맞다고 판단.
루비
스트레스가 없는 쉬운 프로그래밍을 지향하고 우리의 삶을 반영해야 하며, 프로그래밍 언어는 컴퓨터가 아닌, 인간 중심으로 설계되어야 한다."
루비의 경우 간결함과 생산성이 강조된 언어이다. 웹사이트를 만들 대 가장 빨리 만들수 있는 프로그래밍 언이이다. 루비의 경우 가장 큰 특징은 빠르게 작은 서비스를 출시해서 소비자들의 간을 보는 언어이다.
고객 중심의 서비스를 빨리 개발하여 피드백을 받는 것이 목적이 였다면 사용을 하겠지만 MVP를 만드는 실서비스가 아니기 때문에 루비보다는 생태계가 매우 큰 자바를 채택하는 것이 적합한 것 같다.
Node.js
node.Js는 JavaScript의 런터임 환경이기 때문에 자바스크립트를 사용한다. 자바스크립트는 스크립트 언어이다 .스크립트 언어상 해당 코드가 실행이되야 에러가 나는지 확인할 수 있고 에러가 날 경우 프로세스가 종료된다. 프로그램이 복잡해지면 이러한 문제점이 꽤나 부각이 될 수 있을 것 같다.
프론트엔드: JavaScript React
프로젝트 규모가 커질수록 리액트의 컴포넌트 재사용 및 분리 구조에 이점이 있다.
리액트는 자유도가 높아 개발자들마다 코딩 스타일을 통일하는게 어렵지만 나는
백엔드 프론트엔드 혼자 개발할거기 때문에 코딩스타일에 통일성을 챙길 필요가 없다.
vue에 비해 리액트는 컴포넌트를 분리할 때 컴포넌트를 정의해서 쉽게 사용할 수 있다.
props를 전달해주는 과정이 함수에 인수 전달하듯 매끄럽기 떄문에 매끄럽게 진행이 가능하다.
하지만 뷰에서 컴포넌트를 분리하려면 새로운 파일을 하나 만들어야 하고 그에 따라 파일에 해당하는
templete script style도 작성을 해야 한다.
또 props를 전달하는 과정도 2개의 파일을 오가며 해야한다. 복잡한 프로그램을 만들 때에는 리액트가 더 좋은 면이 있다.
프레임워크의 인기도 Vue, angular와 비교해서 굉장히 많은 차이가 있다.
npm기준 한달 install수가 리액트가 10배 가까이 많을 만큼 리액트의 생태계가 훨씬 큰 편이다.
그렇기 때문에 자료의 깊이와 양이 타 프레임워크와 차이가 난다.(StackOverFlow 에서 왠만해서는 내가 찾던 내용은 나왔던 것 같다).
또한 리액트는 단방향 데이터 바인딩 형식인데 데이터 흐름이 단방향(부모->하위 컴포넌트)이라, 코드를 이해하기 쉽고 데이터 추적과 디버깅이 양방향 데이터 바인딩에 비해 쉽다.
기능 리스트를 다시 보니 설명이 빈약하거나 애매한 부분이 많다. 데이터베이스만 정하고 기획에 조금 더 힘을 실어보자
'TIL' 카테고리의 다른 글
TIL-221021- 기능 리스트는 구체적으로 (0) | 2022.10.21 |
---|---|
TIL-221020- 데이터 베이스 정하기 근데이제 플로우를 곁들인 (0) | 2022.10.20 |
TIL-221018 언어 선택하기 (0) | 2022.10.18 |
TIL-221017- 쉽지 않은 기능 리스트 뽑기 (0) | 2022.10.17 |
눈뜨고 코베이는 서울살이 1일차 (0) | 2022.10.14 |