왜 이 기술을 선택했을까(22.11.10TIL)
풀스택을 다시한번 인출해보기 위해서 정리 문서를 한번 살펴보았는데, 아샬님이 처음에 아키텍처를 나누는 것을 보면서 왜 저 기술들을 사용했을까? 하는 생각이 들었다. 내가 면접에서 왜 이 기술스택을 사용했냐는 질문이 들어오면 대답할 수 있을까? 하는 생각이 들었다. 인기있어서 사용했다고 하면 광탈이겠지 ㅋㅋ 구글링을 하면서 왜 사용할까에 대한 부분을 채워보았다.
리액트 왜써요?
이번 강의를 듣고나서 든 생각이 싱글페이지 어플리케이션이 사용성에 굉장히 편하다는 생각이 들었다. 아니나 다를까 조금 구글링을 해보니 리액트는 싱글페이지 어플리케이션을 만드는데 굉장히 유리하다는 생각이 들었다. 물론 자바스크립트 코드만으로도 싱글페이지 어플리케이션을 만들 수 있지만 코드가 매우매우 길어진다. 또한 리액트는 자바스크립트와 마크업을 같이 사용하기 때문에 마크업을 컬렉션에 보관할 수 있다. 마크업을 관리하는데도 훨씬 적은양의 코드로 편하게 달성할 수 있다.
스프링 왜써요?
토비의 스프링 머릿말에 스프링을 왜 사용하는가에 대한 내용이 나왔었는데, 내용은 다음과 같다
IOC/DI
스프링이 유연하고 확장성이 뛰어난 코드를 만들 수 있게 도와주는 OOP설계의 핵심 디자인 패턴이다. 스프링은 모든게 IoC, DI방식으로 진행되므로 유념하고 사용해야 한다.
서비스 추상화
구체적인 기술과 환경에 종속되지 않도록 추상계층을 두는 방법이다. 이러한 특성 덕분에 스프링이 환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어나다. (ex-> JPA라는 추상화 계층을 두어 ORM기술인 hibernate에 종속되지 않음)
AOP
애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화하는 프로그래밍이다. 트랜잭션같은 요소가 AOP에 포함된다.
기술 API
스프링은 엄청나게 다양한 영역에 바로 활용할 수 있는 방대한 기술 API를 가지고 있다. 이런 API들은 스프링의 프로그래밍 모델에 따라 작성되어 있기 때문에 가져다 쓰기만 해도 스프링의 프로그래밍 모델을 체화시킬 수 있다. 스프링의 멘탈 모델이 심플한 OOP에 근간을 두고 있으니 스프링만 잘써도 객체지향 프로그래밍의 실력을 키울 수 있다.
어노테이션을 사용하긴 하지만 POJO방식의 심플한 구조로 객체지향 설계를 구현할 수 있어서 스프링을 사용하는 것이라고 생각한다. (단순할수록 좋으니깐)
액션플랜
내가 정리한 내용이 정답은 아닐수도 있지만, 최소한 이 기술을 왜 사용하는가에 대한 나만의 기준은 필요하다고 생각이 든다. 포트폴리오 주간이 오기전까지 언어별로 어떤 장점이 있고 언제 사용하면 좋을지 기준을 세워보자.