ISOMORPHIC - ① 동형의 ② 같은 모양의
최근 ISOMORPHIC 이란 단어가 주변에서 많이 회자되기 시작했다.
출처: http://www.flashandmath.com/mathlets/discrete/graphtheory/graph4.html
왜 Isomorphic 일까?
Isomorphic은 그리스어 '동등equals’를 의미하는 'isos’와 '형태shape’를 의미하는 'morphic’이 합쳐진 합성어다. Isomorphism은 서로 다른 컨텍스트를 가진 동일한 개체를 설명한다. 개발쪽에서 이야기하는 문맥에서는 서버server와 클라이언트client를 말한다.
개발쪽에서 말하는 아이소몰픽(Isomorphic, [àisəmɔ́ːrfik]) 은 동일한 소스코드를 가지고 서버쪽과 클라이언트쪽에서 작성하는 형태를 지칭한다고 볼 수 있다. 이 용어는 주로 수학에서 사용되었지만 최근들어 웹 프로그래밍 패턴에서 프론트엔드와 백엔드의 코드를 공유하는 곳에서 사용되고 있다.
Isomorhpic의 강점
클라이언트와 서버에서 실행되는 동일한 프레임워크
- Isomorphic을 지원하는 프레임워크 목록: http://isomorphic.net/libraries
SEO에 친화적
구글봇이 크롤링을 하면서 자바스크립트를 실행하게 되었다. 이를 통해서 템플릿을 내포하고 있는 자바스크립트로 작성된 애플리케이션이 실행될 수 있게 되었다. 이는 '동적인 처리도 가능해진다’는 의미를 가지게 될 것이다.
속도
브라우저에서 직접 HTML을 렌더링 하여 속도가 빨라질 것이다. 이를 통해 보다 나은 사용자경험을 유도할 수 있다.
기존에는 서버에서 HTML을 렌더링하여 브라우저에게 전달했던 방식과 달리, 자바스크립트를 브라우저에 전달하고 브라우저에 의해서 템플릿 렌더링이 수행되어 처리되기 때문에 서버의 부하를 감소시키고 성능이 향상되고 있는 클라이언트(브라우저)에서 처리하면서 빠르게 속도가 처리될 것이다.
쉬운 코드 유지보수
동일한 코드로 작성되었기 때문에 점진적으로 코드를 개선할 수 있게 된 것이다. 흐음.
http://isomorphic.net/javascript 에서 말하는 것과 같이 서버사이드와 클라이언트 사이드에서 동작하는 동일한 코드로 작성된 애플리케이션을 지칭한다고 보면 될 것 같다. 최근에 인기를 끌고 있는 리액트(react,https://facebook.github.io/react/) 의 경우가 이에 해당한다고 보면 되겠다.
리액트를 품을 수 있는 미티오(meteor, https://www.meteor.com/)를 배우면서 아이소모픽이 가지는 강점에 대한 관심을 가지게 되었다.
Isomorphic을 구현하는데 있어 적합한 언어는 역시 최근 각광을 받고 있는 '자바스크립트javascript’가 아닐까 싶다.
자바스크립트는 정말 사용하기 쉽지만, 깊이 쓰려면 어려운 녀석이라고 생각하는데…
우쨌든!!
알고 넘어가자. Isomorhic.
스프링에서는 스프링 4.x에 들어서면서 groovy template engine, 최근 출시된 스프링 4.2에서는 script template 을 지원하고 있다. 최근 흐름은 javascript 쪽으로 넘어간 것은 분명해보인다.
참고
- http://isomorphic.net/
- Isomorhpic Javascript: #DevBeat Master class
- Isomorhpic Javascript: The Future of Web Apps
- Isomorphic templating with Spring Boot, Nashorn and React
- Modern Java web application with Spring