어디가서 도메인 설계를 해봤다고 말하려면 이 개념들을 자연스레 머리에 그리고 알기쉽게 설명해야하지 않을까??

최근 ISOMORPHIC 이란 단어가 주변에서 많이 회자되기 시작했다.


출처: http://www.flashandmath.com/mathlets/discrete/graphtheory/graph4.html


왜 Isomorphic 일까?

Isomorphic은 그리스어 '동등equals’를 의미하는 'isos’와 '형태shape’를 의미하는 'morphic’이 합쳐진 합성어다. Isomorphism은 서로 다른 컨텍스트를 가진 동일한 개체를 설명한다. 개발쪽에서 이야기하는 문맥에서는 서버server와 클라이언트client를 말한다.
개발쪽에서 말하는 아이소몰픽(Isomorphic, [àisəmɔ́ːrfik]) 은 동일한 소스코드를 가지고 서버쪽과 클라이언트쪽에서 작성하는 형태를 지칭한다고 볼 수 있다. 이 용어는 주로 수학에서 사용되었지만 최근들어 웹 프로그래밍 패턴에서 프론트엔드와 백엔드의 코드를 공유하는 곳에서 사용되고 있다.

Isomorhpic의 강점

클라이언트와 서버에서 실행되는 동일한 프레임워크

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 쪽으로 넘어간 것은 분명해보인다.

참고


필드명 Field Name 허용값Allowed Value 허용특수문자 Allowed Special Chracters
Seconds 0-59 , - * /
Minutes 0-59 , - * /
Hours 0-23 , - * /
Day-of-month 1-31 , - * ? / L W
Month 1-12 or JAN-DEC , - * /
Day-of-Week 1-7 or SUN-SAT , - * ? / L #
Year (Optional) empty, 1970-2199 , - * /

허용특수문자

  • *: 정의된 모든 값을 사용, 분에 사용하면 매 분단위로.
  • ?: 지정된 값 없이 무작위로 진행되며, Day-of-month와 Day-of-Week에서만 사용하며, Day-of-month가 지정되었을 때 Day-of-Week의 적용을 배제하거나 반대의 경우 사용할 수 있겠다.
  • -: 범위를 지정할 때 사용, 10-12는 10, 11 그리고 12
  • ,: 특정값을 여러개 사용할 때 사용, MON,WED,FRI 는 월요일, 수요일, 금요일
  • /: 시작값/증가값의 형태로 사용하며 0/15인 경우 0, 15, 30, 45 실행되며, 5/15인 경우 5, 20, 35, 50실행됨
  • L: Day-of-month와 Day-of-Week에서만 사용하는 특수문자로, 마지막 값을 반환하는 용도로 사용된다.
    • Day-of-Week에서 사용하면 토요일(7=Saturday)이다.
    • Day-of-month에서 사용시에 ‘6L’인 경우에는 이번달 마지막주 금요일을 지정하는 것과 같다. ‘L-3’인 경우에는 마지막날에서 3일전을 의미한다.
  • W: 주간을 지정하며 15W로 정의하면 이번달 15일 실행되는지 여부를 확인하여 15일이 토요일인 경우에는 14일 금요일 실행되고, 15일이 일요일인 경우에는 16일 월요일 실행된다.
  • LW: ‘L’과 ‘W’를 결합해서 사용가능한데, Day-of-month 필드에 ‘LW’를 정의하면 매달 주간 마지막날에 실행이되는데, 마지막 날이 토요일인지 일요일인지에 따라서 ‘W’의 처리방법을 적용하게 된다.
  • #: Day-of-Week 에서만 허용되는 특수문자로 6#3의 경우는 3번째 금요일(“6”=Friday and “#3”은 3rd one in month)에 실행된다는 의미를 가진다.

정해진 문자와 월, 요일에 대해서는 대소문자를 가리지 않는다.

참고

Spring Boot + Gradle 을 이용한 프로젝트 시작할 때 쓸 목적으로 프로젝트를 하나 만들었다.

먼저 로컬에서 작업하고, 깃헙에서 저장소Repository를 만들었다.

  • 빈 저장소에서 친절하게 설명해주는 깃헙씨.
  • http와 ssh 프로토콜 지원하고,
  • 프로젝트를 새로 만들었을 때 깃을 이용하여 등록하고 깃헙에 생성한 저장소에 밀어넣는 방법.
  • 이미 만들어진 저장소를 깃헙에 밀어넣는 방법.
  • 혹은 다른 버전관리시스템에서 불러오는 방법

친절하다.

회사에서 진행하는 프로젝트는 스프링부트Springboot 를 이용해서 진행해보고 싶은 욕심이 생겼다.


 

기타 참고사항 

 

GVM(Groovy enVironment Manager) 설치방법

○ 설명

Ruby에는 RVM 과 rbenv라고 하는 도구가 광범위하게 사용되고 있다. 이 도구들을 통해서 루비를 설치하고 개발하고 실행하는데 필요한 환경을 구축하고 있다. Groovy에서도 이와 유사한 도구인 GVM(Groovy enVironment Manager,http://gvmtool.net/)라고 하는 도구를 제공하고 있다.

GVM은 대부분의 유닉스 기반 시스템에서 다양한 소프트웨어 개발도구들의 버전을 관리하는 도구다. 커맨드라인인터페이스(CUI 혹은 터미널)에서 설치, 전환, 제거 및 다른 후보자들에 대한 목록을 관리한다.

현재 제공하고 있는 대상들로는:

  • Groovy
  • Grails
  • Griffon
  • Gradle
  • Groovyserv
  • Lazybones
  • vert.x
  • Crash
  • Glide
  • Gaiden
  • JBake
  • Springboot

등이 있으며, Groovy를 대상으로 하는 제공대상들을 확대해갈 예정이다.
실행되는 플랫폼은 다음과 같다:

  • 리눅스
  • 맥OS
  • Cygwin
  • Solaris
  • FreeBSD

GVM은 bash를 사용하고 여러분의 시스템에서 가능한한 curl unzip에만 의존하도록 되어있다. 설치가 진행되기에 앞서 이미 설치가 되어있는지를 점검할 것이다. 여러분의 홈디렉토리 아래에 .gvm 이라고 하는 폴더가 생성되어 있다면, 등록되어 있는 지원대상들을 설치할 것이다.

○ 설치

설치하는 방법은 간단하다. 선호하는 bach 터미널을 열고 다음과 같이 입력한다.

curl -s get.gvmtool.net | bash

GVM이 실행되는데 필요한 요소들이 설치가 진행되면서 이와 관련한 내용들이 화면에 출력할 것이다. 경우에 따라서는 재시작을 요청할 수도 있다. 혹은 gvm-init.sh라고 하는 스크립트를 실행하여 환경을 설정하도록 요청하기도 한다.

$ ~/.gvm/bin/gvm-init.sh

○ 사용

GVM 사용하는 방법을 확인하는 방법은 간단하다.

$ gvm install <candidate: ex) groovy, springboot ...>

지금 내가 GVM을 통해서 설치한 gradle, groovy, springboot는 다음과 같다.



GVM의 설정과 관련된 파일은 ~/.gvm/etc/config 파일이다.

# make gvm non-interactive, great for CI environments
gvm_auto_answer=false/true

# prompt user to selfupdate on new shell
gvm_suggestive_selfupdate=true/false

# perform automatic selfupdates
gvm_auto_selfupdate=true/false

의 내용으로 설정이 가능하고, 실제로 설정된 것은 다음과 같다.

그레들gradle, 그루비groovy와 스프링부트springboot를 실행하는데 필요한 환경설정에 대한 부담이 확 줄어드니~ gvm으로 대동단결!!

+ Recent posts