사실 React를 사용하는 것에 부담은 있었다.
Js에 숙련된 상태도 아니었고, 기본이 되는 바닐라 Js로 프론트를 작성해본것도 웹프로그래밍 시간에 한 것이 전부였다.
그럼에도 한 이유
MSA
웹을 기반으로 프로젝트를 수행 시 프론트 프레임워크를 사용하는 것이 MSA를 구축하는 것에 있어 굉장히 적절해 보였다. 프론트와 백엔드를 명확히 분리할 때 의미있는 MSA 아키텍쳐라 보였기 때문이다.
KIT-PAY 구조도
브라우저에서 필요한 정보의 종류마다 블록체인 서버와 기타 데이터를 관리하는 서버에 알맞게 접속하는 형식으로 만들었다.
이건 개인적인 편안함을 위한 이유이다. 딱히 디자인 감각도 없고, 팀원도 디자인에 뛰어난 사람이 없기 때문이다. Material UI를 사용함으로써 조금 디자인에 대한 부담을 덜 수 있었다.
다음에는 디자인을 조금 더 생각할지, 다른 학과와 협업을 통해 디자인을 해결할 지 고민중에 있다.
그냥 페이지 단위로 페이지의 프론트 작업을 하는 것은 쉽지 않았다. 왜 이렇게 어려울까 하고 넘어가고, Android 앱 개발을 잠깐 해 보았을때 왜인지 알 수 있었다. 페이지 하나로는 그 단위를 모듈화하기 힘들었기 때문이었다. 이번에 React로 하면서 가장 크게 느낀 점은, React의 컴포넌트와 Android 개발의 Fragment가 상당히 비슷하다는 점이었다. 이러한 모듈화는 JavaFx로 GUI 개발을 시작한 나에게 참 잘 맞았다.
React에서 사용되는 동적인 데이터들은 State로 취급된다. 이러한 State는 상속?(이를 상속이라 하면 안되지만, 직관적으로 이해하는 데에는 상속이라고 생각하는 것이 가장 좋았다.)에서의 단방향 관계, 즉 부모 component에서 자식 component로만 데이터 흐름을 보낼 수 있다. 이렇게 수행할 수 도 있지만, 생각보다 피곤하였다. 하지만 이는 MobX를 사용하면서 이러한 점도 해결할 수 있었다.
사실 데이터 관리하는 측면에서도 좋았지만, axios를 통한 ajax를 구현할 때에도 좋았다. MobX는 Single-ton으로 구성되어 있기에, Mobx에 필요한 ajax를 구현하고 필요할 때에 가져다 사용할 수 있어 MVC 패턴으로 사용할 때의 DBManager와 유사한 역할을 해주었다.