블로그 이미지
Max.

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Notice

2009.04.17 15:41 개발관련
Terracotta 3.0 의 특징은 여기에 있습니다.
Terracotta 3.0 의 상세 설명 동영상은 여기에 있습니다.
Maven과 함께 테스트 할 예제는 여기에 설명되어 있습니다.(소스는 여기에)
현재 테스트된 Spring Framework 버젼은 2.5.4입니다. 이후 버젼도 잘 되리라 생각합니다.
Terracotta 대부분의 정보는 관련책도 있지만, 해당 사이트에서 충실히 얻을수 있으며, 포럼, 위키, 웹캐스트 등이 도움이 됩니다.(책 버전은 좀 되어서 별로 도움이 안될수도 있습니다.)
신고

'개발관련' 카테고리의 다른 글

Marcel Overdijk의 SpringSource에 대한 예언  (3) 2009.04.21
실행의 힘  (2) 2009.04.17
Terracotta 3.0 released  (0) 2009.04.17
SpringSource 팀블로그의 멋진글  (0) 2009.04.17
Spring3.0 M2 RESTful Client 구현 예제  (0) 2009.04.17
Google App Engine 이슈  (1) 2009.04.17
posted by Max.
2008.08.19 17:54 이전글(~2009)

Terracotta사에서는 다른 opensource에 비해 교육자료로 webcast를 자주 이용한다. 이는 사용자 접근성을 고려하기 위함이다. 왜 그럴까? Terracotta 비지니스 영역의 특성 때문이다. Terracotta를 이용하면 비교적 저렴하게 시스템을 구축할수 있음에도 불구하고, 현업에서는 하드웨어 벤더를 더 선호하는 탓에 시장의 입지가 약함을 간접적으로 알수 있다. (어쨌든 나같은 빈민스러운 업체들에게는 좋은일이다.)

Terracotta Video Podcasts 라는 feed페이지에 교육용 동영상 정보를 제공하고 있는데 대략 하나의 동영상 파일을 보는데 한시간 남짓 걸린다. 이런 동영상을 제작하고 배포하는데는 그만큼 Terracotta를 널리 알리는데 신경쓰고 있다는 뜻인데 최근 2007년부터인걸 보니 시작한지는 얼마 안된듯 하다.

사용자 삽입 이미지

주로 내용은 Terracotta 소개와 특징인 Cluster, Cache등 응용가능한 분야에 대해서 설명하고 있다. - 자세히 보면 정말 중요한 부분은 빠져있다.의도된건지...너무많이 공유하면 재미 없어서 인지...-

iPhone또는 Mac에서도 접속해서 볼수 있게 퀵타임 형식의 동영상으로 제공하고 있는것이 상당히 사용자측을 고려한듯 하다.

최근들어 사이트가 자주 업데이트되고, 컨텐츠도 보강 되는데 Spring2.5 지원 관련 소식은 조용하다.(테라코타 제품에서 Spring 이슈는 그리 큰 영역이 아닐수도 있겠다는 생각이 든다.)

최근 인도 델리에 지사를 낸것이 뉴스로 등록되어 있는데 아시아 시장을 공략하기 위해서 란다. 이미 중국과 인도엔 시장을 형성하고 있는듯 하다. 그런데 IT하면 아시아에서는 우리나라가 테스트벤드 아니였던가? 우리나라에 대한 언급이 없는걸 보니 이양반(CEO-Amit Pandey) 우리내 IT시장구조를 보고 놀랜건 아닌지 모르겠다. 앞으로 아시아 시장이 활발해 지면 우리나라에도 이제품이 먹힐지 기대된다.

그런데 당췌 우리나라는 오픈소스에 대한 컨설팅을 받는 곳이 있는가? 다들 컨설팅이 가능한 실력을 보유하고 있는것인가? 아니면 오픈소스라서 컨설팅을 받는것이 미친짓이라 여기는것일까? 알수없다... Spring도 Terracotta도 중대한 시스템에서는 하부구조까지 검증된 구조를 가지고 가야 한다. 대충알고 짜붙이기 해서 Spring이니까 Terracotta니까 괜찮겠지 하면.... 나중에 피똥싼다....
신고
posted by Max.
2008.08.01 11:46 이전글(~2009)

테라코타에서는 아직도 Spring2.5를 지원 안한다. 열심히 만들고 있다고 하는데, OSGi까지 포함해서 가능하게 할려면 시간이 많이 걸릴듯 하다. 낼모래 Spring 3.0 이 나올텐데.... 테라코타사가 스프링 발전속도를 맞추기가 버거워 보인다.

사용자 삽입 이미지

신고
posted by Max.
2008.07.29 19:06 이전글(~2009)

TC(Terracotta)는 Master/Worker pattern 예제를 제공하고 있다. 기존의 예제가 SVN에서  opendatagrid 와 WorkManager 로 제공하였는데, 최근 이 모두를 제거하고 새롭게 예제를 올렸다.

새롭게 올라온 예제는 총 4개를 제공하고 있는데 그중 첫번째 예제인 Web Spider는 과거 버젼을업데이트한 버젼이다. 이번엔 이것부터 테스트해 보자.

Web Spider는 Commonj를 이용해서 TC(Terracotta)와 연동하여 특정 URL이라는 job을 주면 해당 사이트의 특정 깊이까지 링크를 타고 들어가고 그 결과값을 공유하는 Master/Worker를 구현한 예제이다.

0. 테스트 환경은 이렇다.

JDK5.0 + Spring STS 3.4 + Terracotta2.6.3 + Maven2.x

1. Eclipse(Spring STS) SVN에서 아래주소로 소스를 다운받는다.

2. Dos창에서 받은소스 디렉토리로 이동후 Maven을 실행한다.

mvn install

사용자 삽입 이미지
많은 파일을 다운받은후 빌드성공이라는 메시지가 나오면 된다.
이것이 하는것은 소스코드를 다운받고, 빌드할 라이브러리를 다운받고, 빌드를 실행하는 것이다.

2. 이제 빌드안 실제 예제(Webspider)를 빌드하고 압축한다.

mvn pakage

사용자 삽입 이미지

이미 빌드 되어있다면, 여기서는 jar파일로 압축만 하게 된다.

3. 이제 준비를 다 했으니, TC를 기동해야 한다. 이번 예제는 기존의 예제와 달리 TC maven plug-in을 사용하고 있다. 따라서 아래와 같은 방법으로 TC를 기동한다.(이후 디렉토리는 모두 samples에서 진행된다.)

mvn tc:start

사용자 삽입 이미지
maven plug-in 때문에 많은 파일을 다운받는다. 간혹 잘못되어서 DSO TC서버가 기동되지 않을때는 다시한번 위 maven명령을 실행해 본다. 빌드성공 메시지가 나오면 TC서버가 정상적으로 기동중임을 확인한 것이다.

4. 이제 본격적으로 Master/Worker 를 실행할 차례다. 먼저 Master를 아래와 같이 실행한다.

mvn -DactiveNodes=master tc:run

사용자 삽입 이미지
로그를 자세히 보면 아래와 같다.

[INFO] [master] Starting Spider:
[INFO] [master]   start url                     = http://www.google.com
[INFO] [master]   max parse depth               = 5
[INFO] [master]   follow external links         = false
[INFO] [master] work manager node id: ClientID[0]

이것은 구글 웹사이트에서 5단계 깊이가지 링크를 추출해 낼것을 주문한것이다. 또한 현상 상태에서 Worker는 없는 상태이다.

5. 이제 Worker를 실행해 보자. Worker는 여러개를 실행할수 있으나 여기서는 두개만 해본다.
각각의 Dos창을 열고 samples 디렉토리에서 아래와 같은 명령을 실행한다.

mvn -DactiveNodes=worker tc:run

실행결과 아래와 같이 각각의 Worker는 Master로 부터 임무를 받고 실행한 결과를 공유한다.

[INFO] [master] created new channel for routing ID: ClientID[1]
[INFO] [master] registered channel with ID: ClientID[1]
[INFO] [master] Submitted URL: http://www.google.com
[INFO] [master] created new channel for routing ID: ClientID[2]
[INFO] [master] registered channel with ID: ClientID[2]

Worker가 실행되면 Master에서는 각각의 Worker로 부터 ID를 할당받아서 job을 분배한다.

Worker1

사용자 삽입 이미지
Worker2
사용자 삽입 이미지
Master
사용자 삽입 이미지

이 예제는 TC를 이용한 전형적인 Master/Worker 구현체이다. 이미 TC를 이해하고 Master/Worker 을 이해하였다면 어려운것이 아니지만, 새로 업데이트된 이번 예제는 이것 이외에도 3개가 더 있는데 이들이 모두 하나의 설정으로 되어 있어서 처음 접하는 사람에게는 복잡해 보일지도 모르겠다. 초기 스터디때 이 예제를 기반으로 Spring과 연동해 보았는데 어려룰께 없었다. 또한 다른 Spring Modules 프로젝트에 있는 Batch와 Integration과의 연동도 어렵지 않으리라 생각한다. 다음에는 예제의 소스코드 구조 및 흐름을 기준으로 어떻게 동작하는지 기술해 봐야 겠다. (사실 Master/Worker 패턴에 Work가 Webspider라는게 전부다.)

TC는 Hibernate처럼 단순 속도를 비교하면 느리지만, 그 수용성이 대단히 유연해서 엔터프라이즈 환경에서 응용가능성이 매우 많을것이라는 생각이다.
신고
posted by Max.
2008.07.14 14:20 이전글(~2009)
Terracotta Master/Worker 에 대한 예제를 만들어 보고, 실무에 적용도 충분히 가능하리라는 생각을 해왔고, 모회사에서는 이미 적용하기 위해 부단히 노력하고 있다. 나도 역시 이것을 적용하기 위해서 이리저리 궁리중이다.

그런데 이번에 테라코타의 Master Worker 페이지에 사례글들이 링크로 추가 되었다. 이미 해외에서는 적용된 사례가 있다는것을 알고 있었지만, 특히 'Big Bank'에서도 적용했다고 하는 것을 봐서는 컨설팅만 잘된다면 실무에도 문제없지 잘 될것으로 생각된다.

~
신고

'이전글(~2009)' 카테고리의 다른 글

그 회사가 모르는 것  (4) 2008.07.17
영어에 대한 굴욕 (잊지말자 이날을...)  (6) 2008.07.15
Terracotta Master/Worker 구현 성공사례 관련글 링크  (2) 2008.07.14
정리해 보자.  (2) 2008.07.11
ITIL 기초  (2) 2008.07.07
지금 시국이 이렇다.  (3) 2008.07.05
posted by Max.
2008.06.30 05:36 이전글(~2009)

Terracotta란 무엇인가? 소개영상이다. 간단히 말해서 여러 JVM을 하나로 묶어준다.(클러스터링한다) 그리고 여기서 공유메모리(NAM: Network Attached Memory)를 이용해 다양한 효과를 낼수 있다.

NAM을 이용하는것은 단순히 비교하면, 기존의 방법보다 느리고 좋을게 없다.(NAM의 원리를 이해하면 알게 된다.) 그러나 잘 생각해 보면, 이것은 마치 Hibernate와 비슷한 효과가 있다. 단순질의, 단순효과 시간측정은 떨어질지라도 전체 시스템적인 효과는 매우 큰 장점을 가지고 있다.(이것이 Hibernate를 쓰는 이유이고, Terracotta의 장점이라 생각한다.)

간단한 예제를 만들어 보자.

1. 예제구성(Spring2.0.x + Terracotta.2.6.x)

사용자 삽입 이미지
TC(Terracotta)서버를 실행하고, 각각의 JVM이라고 여겨지는 Tomcat을 실행한다. 각각의 Tomcat은 TC 설정파일인 tc-config.xml파일 하나면 된다. 여기엔 NAM에서 이용할 객체와 instrumented class를 선언하고, 필요에 따라 lock도 걸수 있다.

2. Terracotta 설정파일(tc-config.xml)

 <application>
    <spring>
      <jee-application name="dso1">
        <application-contexts>
          <application-context>
            <paths><path>*/applicationContext.xml</path></paths>
            <beans><bean name="showService" /></beans>
          </application-context>
        </application-contexts>
 <instrumented-classes>
          <include>
            <class-expression>net.max.test.service.Show</class-expression>
          </include>
        </instrumented-classes>
     </jee-application>
    </spring>
  </application>
일반적인 DSO 설정은 여러가지 옵션이 존재한다. 여기서는 간단한 Spring 관련 설정만 본다. TC는 Spring 관련 설정 Tag를 따로 제공한다. 위의 설정은 showService Bean을 공유하고, Show객체를 instrumented class로 사용하겠다는 것이다.

3. Spring 설정 파일(applicationContext.xml)

 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
………(생략)……. "> 
<bean id="showService" class="net.max.test.service.ShowServiceImpl"/>
</beans>

Spring 설정파일에 해당 Bean이 설정되어 있을 것이다.

4. 소스코드 
public class ShowServiceImpl implements ShowService {
  private Show show = new Show();
  @Override
  public Show findShow(String id, String path) {
//---- 시작
synchronized (show) {
if("ok".equals(id))
this.show.setName("Max::"+path);
}
System.out.println("[요청 결과]"+path);
//----
return show;
  }
}

흔히 보는 간단한 구현 서비스 구현체이다.(여기에 log를 위해 AOP도 걸어 본다.)

5. 실행하기
사용자 삽입 이미지
 각각의 Tomcat 초기화면이다.
 여기서 8081 서버에서 add 버튼을 3번 클릭해 본다.
사용자 삽입 이미지
화면 결과로 로그 화면이다.
이제 8082서버에서 add버튼은 한번 클릭해 본다.
사용자 삽입 이미지

8081서버에서 실행한 결과값이 공유 되었다는것을 확인할수 있다. 8082서버의 요청은 평범하게 add버튼을 눌렸을 뿐이다. 이처럼 공유메모리를 이용해서 각각의 JVM의 메모리에 올라와 있는 객체를 공유할수 있다.

심지여, 8081, 8082 JVM 모두를 죽였다가, 다시 부팅해도 이 객체의 값은 보존 되어 진다.
TC의 NAM 때문이다. 이것은 여러가지 응용이 가능하다. TC홈페이지 소개된 여러가지 내용처럼...

사용자 삽입 이미지
그림 출처 [ http://www.theserverside.com/tt/articles/article.tss?l=DistCompute]

위 그림은 본 예제를 잘 표현한 구조라 생각되어져서 붙여본다.
(그림 출처의 아티클도 읽어보면 좋을듯 하다.)

신고
posted by Max.
prev 1 next