이 기종 언어로 작성된 프로그램 사이의 통신 수단은 어떤게 괜찮은가요?

vudghkzm의 이미지

물리적으로 다른 기계에서 돌고 있고, 또 다른 종류의 프로그래밍 언어로 작성된 프로그램들이 있다고 가정합니다. 이 둘사이에 통신을 해야 할 때, 괜찮은 수단은 뭐가 있나요?

단번에 생각나는 것으로는 소켓 통신밖에 없는데요...

그 밖에 다른 방법이 있다면 어떤 것들이 있는지 알고 싶습니다.

정태영의 이미지

시리얼 통신도 있겠고 LAN 으로 연결되어 있다면 socket 을 쓰는 방법도 있겠고 구현하기 나름이 아닐까요 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

익명 사용자의 이미지

물리적으로 분리되어 있는 시스템이라면 일단 물리적으로 연결가능해야 할것인데,
이러한 물리적 연결 매체는 매우 다양하고 많기도 합니다.(시리얼, 패러랠, Ethernet, Token ring, FDDI, ATM등등)
이들은 고유의 프로그래밍 인터페이스를 제공하기도 합니다.
그러나, 이러한 하드웨어 연결메커니즘에 의존하지 않고, 상위의 논리적인 통신을 가능하게 하는 것이 있다면 좋겠지요? 일단 한곳에서 만들면, 여러 기종에 걸쳐 사용할 수 있다면 더욱 좋을 것입니다. 여러 모로 말이지요.

그게 소켓입니다.

creativeidler의 이미지

요즘은 웹 서비스가 대세죠. 대세가 꼭 좋은 건 아니지만 호환성, 편의성 등을 따지면 웹 서비스가 괜찮은 선택입니다. 대부분의 언어에 이미 오픈된 라이브러리들이 있기도 하구요.

지리즈의 이미지

웹서비스는 그 유연성에 비해,
덩치가 거대하고, 또한 비동기식 통신밖에 지원하지 않으니
적절하지 않은 선택이 될수도 있습니다.

TCP/IP가 가장 무난하죠...

경우에 따라서는 RS232(Serial) 혹은 UART도 나쁘지 않은 선택입니다.
(특히 두 장비가 전화선 너머 있고, TCP/IP 네트워크 구성이
불가한 조건이면, 이것말고는 거의 대안이 없습니다.)
머신이 3대 이상일 경우 RS422,482도 가능합니다.
(이것도 전화선 너머로 사용이 가능합니다.)

특이한경우 RS488(혹은 RS488.2 - GPIB,HPIB)도
선택의 대안이 되는데, 이건 비용이나 지원 라이브러리나
꽤 골치 아픈 부분이 많죠...(피하고 싶습니다.)

속도는 역시 TCP/IP만한 것이 없습니다.

There is no spoon. Neo from the Matrix 1999.

creativeidler의 이미지

머, 웹서비스가 TCP/IP 레이어를 직접 사용하는 것에 비하면 당근 느리겠지만 덩치가 거대하다는 말은 좀 오버인 것 같습니다. 라이브러리 자체도 거대하지 않거니와 실제로 엔터프라이즈에서 높은 scalability를 요하는 환경에서도 널리 쓰이고 있으므로 속도 문제도 별로 크지 않다고 할 수 있죠. 아파치 정도의 퍼포먼스는 충분히 보장 받을 수 있습니다.

사실 이런 선택은 요구사항에 따라 좌우됩니다. 만약 게임처럼 작은 데이터가 쉴새 없이 왔다갔다 해야하는 경우라면 웹 서비스는 적합하지 않습니다. 한 번에 오가는 데이터가 적다면 상대적으로 웹서비스를 위한 부가 데이터들이 큰 오버헤드가 되니까요. 하지만 엔터프라이즈 애플리케이션이라면 여러모로 웹서비스가 좋습니다. 데이터의 구조가 복잡할수록, 많은 애플리케이션이 엮일수록 웹서비스가 좋다고 할 수 있겠습니다.

소켓 통신을 생각할 수 있는 상황이라면 시리얼 통신이나 UART는 고려하지 않아도 될 것 같군요.

atie의 이미지

엔터프라이즈 어플리케이션이라면 웹 서비스 보다는 MQ에 xml을 주고 받는 방식이 현재로는 보다 일반적입니다.
MQ도 벤더별로 다양한 종류가 있고, 대표적인 언어들은 다 API가 지원이 되고 무엇보다 통신 쪽 부분은 개발자가 관여할 필요가 없는지라 편하기도 하지요. 내부 어플리케이션들의 백엔드로 많이 적용이 되기도 합니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

vudghkzm의 이미지

제가 무지해서..

웹 서비스라면 구체적으로 무엇을 말하는건지요?
HTTP 프로토콜을 말하는건지요?
아니면 HTTP를 응용한 xml-rpc 와 같은 것을 말하는건지요?

지리즈의 이미지

vudghkzm wrote:
제가 무지해서..

웹 서비스라면 구체적으로 무엇을 말하는건지요?
HTTP 프로토콜을 말하는건지요?
아니면 HTTP를 응용한 xml-rpc 와 같은 것을 말하는건지요?

후자입니다.

카타로그, WSDL과 같이 클라이언트가
쿼리할 수 있는 내용에 대한 정의(일종의 함수와 비슷합니다.)와
자료형(일반 변수, 개체, 바이너리 데이터 포함) 등을 XML형태로 미리 제공받을 수 있습니다.

그리고, 이를 근거로 soap 메시지를 통해서 데이터를 받아 옵니다.

따라서 매우 유연합니다.

몇몇 java 라이브러리는 이 wsdl을 바탕으로
클래스를 자동으로 생성해줍니다.
따라서, xml, http를 모르는 개발자들도 쉽게 사용할 수 있죠.

좀 무겁고 방대하다는 느낌이 들기도 하고,
End User보다는 Site와 Site간의 통신에 적절하다는 생각입니다.

예를 들면, 기상청에서 웹서비스를 하고 있는데,
기상청에서 기상정보를 받아서, 재차 원하는 정보의 형태로
다시 사용자들에게 서비스할 수 있죠...

There is no spoon. Neo from the Matrix 1999.

creativeidler의 이미지

웹서비스는 정의하는 사람에 따라 달라지기도 하지만 쉽게 이해하려면 SOAP를 이용한 XML 메시지 통신이라고 보시면 됩니다. API 입장에서는 원격 메소드를 호출하는 것과 유사하게 통신을 할 수 있기 때문에 소켓 통신처럼 자체적으로 프로토콜 정의하고 문자열 처리하는 수고를 할 필요가 없죠.

http://ws.apache.org/

여기 가시면 오픈소스 구현체들을 볼 수 있습니다.

Quote:
엔터프라이즈 어플리케이션이라면 웹 서비스 보다는 MQ에 xml을 주고 받는 방식이 현재로는 보다 일반적입니다.

어느 게 더 일반적인가.. 제가 알고 있는 근거를 늘어놔 본다면..

메이저 Java IDE에서 웹 서비스 자동화는 아주 잘 지원하고 있지만 MQ를 제대로 지원하는 경우는 그리 많이 못 봤습니다. 올초의 자바 컨퍼런스, 썬 테크 데이에서도 웹 서비스는 중요한 화두 중 하나였지만 MQ는 한 번 정도 나왔구요. 서점에 가도 웹 서비스 책 숫자가 MQ 책 숫자의 다섯 배는 넘을 겁니다. 이클립스 플러그인도 Web Service는 별도의 카테고리로 27개의 플러그인이 있지만 MQ는 하나 있는지도 잘 모르겠습니다. 구글 검색 결과도 웹서비스가 압도적으로 많고 여러 IT 관련 사이트에서도 웹서비스 관련 기사는 수도 없이 찾을 수 있는 반면 MQ 관련 기사는 찾기 쉽지 않습니다.

구체적인 사례를 봐도 정부 부문 SI에서는 웹서비스가 상당히 일반화되어서 SI 개발자를 괴롭히는 "연동"문제는 요즘 웹서비스로 풀고 있는 추세입니다.

MQ 쪽에는 어떤 근거들이 있나요?

atie의 이미지

creativeidler wrote:
웹서비스는 정의하는 사람에 따라 달라지기도 하지만 쉽게 이해하려면 SOAP를 이용한 XML 메시지 통신이라고 보시면 됩니다. API 입장에서는 원격 메소드를 호출하는 것과 유사하게 통신을 할 수 있기 때문에 소켓 통신처럼 자체적으로 프로토콜 정의하고 문자열 처리하는 수고를 할 필요가 없죠.

http://ws.apache.org/

여기 가시면 오픈소스 구현체들을 볼 수 있습니다.

Quote:
엔터프라이즈 어플리케이션이라면 웹 서비스 보다는 MQ에 xml을 주고 받는 방식이 현재로는 보다 일반적입니다.

어느 게 더 일반적인가.. 제가 알고 있는 근거를 늘어놔 본다면..

메이저 Java IDE에서 웹 서비스 자동화는 아주 잘 지원하고 있지만 MQ를 제대로 지원하는 경우는 그리 많이 못 봤습니다. 올초의 자바 컨퍼런스, 썬 테크 데이에서도 웹 서비스는 중요한 화두 중 하나였지만 MQ는 한 번 정도 나왔구요. 서점에 가도 웹 서비스 책 숫자가 MQ 책 숫자의 다섯 배는 넘을 겁니다. 이클립스 플러그인도 Web Service는 별도의 카테고리로 27개의 플러그인이 있지만 MQ는 하나 있는지도 잘 모르겠습니다. 구글 검색 결과도 웹서비스가 압도적으로 많고 여러 IT 관련 사이트에서도 웹서비스 관련 기사는 수도 없이 찾을 수 있는 반면 MQ 관련 기사는 찾기 쉽지 않습니다.

구체적인 사례를 봐도 정부 부문 SI에서는 웹서비스가 상당히 일반화되어서 SI 개발자를 괴롭히는 "연동"문제는 요즘 웹서비스로 풀고 있는 추세입니다.

MQ 쪽에는 어떤 근거들이 있나요?


MQ는 IBM의 Websphere MQ, MS의 Biztalk, Sun의 JMS, Tibco의 MQ, Oracle의 메세지 게이트웨이 등등해서 보시면 됩니다. :wink:

----
I paint objects as I think them, not as I see them.
atie's minipage

creativeidler의 이미지

Quote:

MQ는 IBM의 Websphere MQ, MS의 Biztalk, Sun의 JMS, Tibco의 MQ, Oracle의 메세지 게이트웨이 등등해서 보시면 됩니다. Wink

MQ가 널리 사용되고 있다는 근거는 아닌 듯 하군요. 그냥 MQ도 웹서비스만큼은 아니지만 꽤 많은 회사들의 지원을 받고 있다 정도? 더군다나 그 회사들은 대부분 웹서비스를 강력하게 추진해왔던 회사들이라는 건..
atie의 이미지

creativeidler wrote:
Quote:

MQ는 IBM의 Websphere MQ, MS의 Biztalk, Sun의 JMS, Tibco의 MQ, Oracle의 메세지 게이트웨이 등등해서 보시면 됩니다. Wink

MQ가 널리 사용되고 있다는 근거는 아닌 듯 하군요. 그냥 MQ도 웹서비스만큼은 아니지만 꽤 많은 회사들의 지원을 받고 있다 정도? 더군다나 그 회사들은 대부분 웹서비스를 강력하게 추진해왔던 회사들이라는 건..

직접 알아보시고 위와 같이 이야기 하셔도 늦지 않을 겁니다. IBM MQ의 경우는 국내에서도 10년 이상의 실적이 있으니 레퍼런스를 찾기도 쉬울 겁니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

creativeidler의 이미지

Quote:

직접 알아보시고 위와 같이 이야기 하셔도 늦지 않을 겁니다. IBM MQ의 경우는 국내에서도 10년 이상의 실적이 있으니 레퍼런스를 찾기도 쉬울 겁니다.

사실 제가 좀 삐딱하게 나간 것 같은데 제가 바라는 것은 통계적 근거가 필요한 내용에 대해 자신의 경험 안에서 판단한 내용을 주장하지 말았으면 좋겠다는 것입니다. 웹서비스가 더 일반적으로 쓰이느냐 MQ가 더 일반적으로 쓰이느냐에 대한 결론은 오직 통계자료만이 내려줄 수 있는 문제인데 atie님이 제시하신 근거들은 MQ가 널리 쓰인다를 어느 정도 뒷받침할 수 있을지는 몰라도 "웹서비스보다 널리 쓰임"을 뒷받침할 수는 없습니다.

물론 제가 제시한 근거들도 확정 근거는 아닙니다. 통계자료 없이 확정 근거는 불가능하므로 증거쌓기를 통해 신뢰성을 높이고자 한 거이죠. 책 숫자, 구글 검색, 지원 도구의 숫자 등은 레퍼런스 사이트 통계만큼 확정 근거는 아니지만 여러 개가 쌓임으로써 확정 근거에 근접할 수 있죠. 하지만 atie님의 근거는 단편적인 사례에 불과합니다. 게다가 그 단편적인 사례도 설득력을 얻기 힘든 것이 말씀하신 기업들의 웹사이트에 가도 웹서비스 관련 문서가 훨씬 많고 웹서비스 관련 제품군을 더 많이 광고하고 있습니다.

사실 이처럼 정량적, 혹은 통계적인 근거가 필요한 주장을 하면서 그런 근거가 필요하다는 사실을 깨닫지 못하고 단편적인 근거만을 제시하는 일이 kldp에서 의외로 많이 나옵니다. atie님 정도 되는 분이면 그런 실수는 충분히 피해갈 수 있지 않을까요.

한 가지 더 첨언하자면 MQ는 웹서비스와 용도가 좀 다르죠. 웹서비스의 용도는 딱 이 글의 주제처럼 다양한 구성의 애플리케이션 사이의 통신이라면 MQ는 신뢰성 높은 transaction 처리죠. MQ는 작업이 좀더 heavy load이면서 즉각적인 응답의 필요성이 적은 경우에 쓰입니다. 웹서비스는 HTTP와 비슷한 응답시간이면 충분하구요. 이보다 더 응답시간이 빨라야 하는 경우는 역시 소켓 통신으로 가겠죠.

atie의 이미지

creativeidler wrote:
...

사실 이처럼 정량적, 혹은 통계적인 근거가 필요한 주장을 하면서 그런 근거가 필요하다는 사실을 깨닫지 못하고 단편적인 근거만을 제시하는 일이 kldp에서 의외로 많이 나옵니다. atie님 정도 되는 분이면 그런 실수는 충분히 피해갈 수 있지 않을까요.

...


저는 위에 제가 언급한 제품들이 단편적인 근거라고 생각하지 않으며, 제가 실수한 것도 없다고 생각합니다.

주제로 돌아와서,

Quote:
물리적으로 다른 기계에서 돌고 있고, 또 다른 종류의 프로그래밍 언어로 작성된 프로그램들이 있다고 가정합니다. 이 둘사이에 통신을 해야 할 때, 괜찮은 수단은 뭐가 있나요?

이런 환경은 기업 내에서나 기업과 기업간 자료를 주고 받는 경우라면 보통의 경우가 됩니다. 당연히 두 상대방 간에 어떤 형태로든 통신이 이루어져야 하고 이를 전담할 수 있는 중간 매체 (미들웨어)가 필요하게 됩니다. 이런 필요에 의해 만들어진 것이 메세지 큐(MQ) 입니다. 두 상대방의 자료를 메세지라고 하고, 통신의 단절, 처리의 속도 등의 예외 사항을 고려하여 파일 시스템 기반의 Queue를 사용하며, 통신은 tcp/ip의 socket이 내부적으로 사용이 됩니다. 이 기본 기능들을 상위 개념의 어플리케이션에서 사용을 할 수 있도록 API와 관리 tool을 포함시켜 제품화 한 것이 IBM등의 MQ 제품입니다. JMS는 같은 개념을 자바 언어로 규격화 시킨 것이고요.

MQ와 JMS의 미들웨어를 씀으로써 얻게 되는 장점은 어플리케이션 개발자는 API에 맞춰 메세지만 Queue에 넣어주면 point-to-point 와 publish/subscribe의 통신 모델에 대한 역할은 미들웨어가 전담을 하게 되어 개발자가 통신 모듈과 이를 관리할 모듈을 작성해야 하는 부담에서 벗어나게 해 준다는 겁니다.

MQ의 경우는 10년 이상, JMS는 5년 정도 개발과 적용이 꾸준히 되어 온 상태이고, 타 기술 요소의 추세에 맞추어 메세지는 xml 지원을, 프로토콜은 전용 포트를 이용하는 것에 http도 지원을 하며, 보안을 위한 ssl의 적용도 되어 몇 년전 부터 제품화 되고 있습니다. JMS의 경우는 자바 기반의 엔터프라이즈 서버들의 기본 모듈로 채택이 되어서 IBM이나 BEA의 어플리케이션 서버 등 외에도 오픈소스로 진행이 되는 JBoss나 Geronimo에도 적용이 되었습니다.
또한 MQ나 JMS는 어플리케이션 서버의 모듈로도 또는 단독으로도 동작이 되며, 최근의 SOA 모델의 기반 기술 요소 중의 하나가 됩니다. 즉, 웹서비스를 웹을 이용한 어플리케이션 모델의 통칭적 이름으로 정의를 하면, 그 내부의 기술적 요소 중의 하나로 MQ나 JMS가 사용이 된다는 겁니다.

일 이년 전에 본 통계에 의하면 향후 5년 후면, 북미 시장에서 95%의 기업 어플리케이션의 자료 교환은 xml로 이루어지고 제가 위에 언급한 제품들이 그것을 지원할 현재의 대표 제품들 입니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

creativeidler의 이미지

Quote:
저는 위에 제가 언급한 제품들이 단편적인 근거라고 생각하지 않으며, 제가 실수한 것도 없다고 생각합니다.

MQ가 웹서비스보다 "더 널리" 쓰인다는 주장을 뒷받침하려면 당연히 MQ에 관한 통계와 웹서비스에 대한 통계의 비교가 이루어져야 하는 것 아닌가요? 한쪽에 대한 이야기, 그것도 통계는 전혀 없이 몇몇 기업에서 지원하고 있다는 언급만 한다면 단편적인 근거죠. MQ를 IBM, MS 등이 지원하고 있다는 말이 MQ가 웹서비스보다 널리 쓰인다는 말을 뒷받침할 수 있다고 생각하시나요?

Quote:
이런 환경은 기업 내에서나 기업과 기업간 자료를 주고 받는 경우라면 보통의 경우가 됩니다. 당연히 두 상대방 간에 어떤 형태로든 통신이 이루어져야 하고 이를 전담할 수 있는 중간 매체 (미들웨어)가 필요하게 됩니다.

이 가정은 틀렸습니다. 미들웨어 없이 직접 통신하는 케이스도 얼마든지 가능하고 또 실제로 많이 쓰이고 있으니까요.

Quote:
일 이년 전에 본 통계에 의하면 향후 5년 후면, 북미 시장에서 95%의 기업 어플리케이션의 자료 교환은 xml로 이루어지고 제가 위에 언급한 제품들이 그것을 지원할 현재의 대표 제품들 입니다.

이 주장 역시 MQ vs 웹서비스에는 아무런 영향을 미칠 수 없는 이야기입니다. 웹서비스나 MQ나 똑같이 XML로 자료교환을 하는 것이니까요.

말씀하신 WAS들 역시 마찬가지입니다. MQ 뿐 아니라 웹서비스도 같이 잘 지원하고 있는 것들이죠. 마찬가지로 MQ가 웹서비스보다 더 널리 쓰인다는 근거는 되지 못합니다.

지금 상황을 비유를 들어보자면 이렇습니다.
A : 한국 사람은 짜장면을 짬뽕보다 더 좋아해!
B : 근거를 대봐!
A : 중국집1도 짜장면을 팔고 중국집2도 짜장면을 팔아.
B : 중국집1은 짬뽕도 같이 팔잖아. 오히려 짬뽕을 더 많이 미는 거 같던데? 중국집1에서 짜장면 짬뽕 매출 비율이 어떤지 알아?
A : 중국집1은 10년 전부터 짜장면 팔았어.
B : 그리고 세상에 중국집이 중국집1, 2밖에 없냐?
A : 앞으로 5년 후면 대부분 면요리를 많이 먹을 꺼래.

좀 과격하게 느끼실지 모르겠지만 atie님의 주장을 1:1로 대응시킬 수 있는 비유라고 생각해서 들었습니다. 혹시 적절치 않은 부분이 있다면 지적해주시기 바랍니다.

하나 더 첨언하자면, 혹시 MQ의 유용성을 말하고 싶은 거라면 전 거기에 전혀 이의를 제기할 생각이 없습니다. 전 JMS implementation 개발에도 참여해보았고 MQ를 이용한 애플리케이션도 개발해본 경험이 있어 MQ의 유용성에 대해서라면 충분히 공감합니다. 하지만 웹서비스보다 MQ가 널리 쓰인다는 주장이 가능하려면 최소한 하나라도 비교할 수 있는 근거가 필요하다는 얘깁니다. 그런 의미에서 비교 없이 한쪽에 대한 사례만 제시한 atie님의 근거가 단편적이라고 한 것이구요.

지리즈의 이미지

제가 알기로는
MQ와 webservice는 시장과 그 역할이 차이가 나는 분야로 알고 있습니다.

분명 둘다 "이 기종 언어로 작성된 프로그램 사이의 통신 수단"인 것에는
틀림이 없지만,
MQ는 Host to Host의 관계가,
WebService는 Site to Site의 관계가 더 적절한 것 같습니다.

제 생각에는 어느쪽이 더 우세(널리 사용된다)하다고 말할 수 없다는 생각입니다.

큐 방식의 MQ는
각 Peer가 동등한 위치라는 점과,
메시지 원할한 소통에 강점을 보이지만,
미션 크리티컬한 동기식 통신에는 한계가 있죠.
또한 Message의 정의에 대한 협의가 어느정도는 있어야 하고,
유연성에 제약이 발생합니다.
일관성이 있는 관리가 가능한 site내의 host간의 통신에 적절합니다.

반면, 웹서비스는
미션 크리티컬한 동기식 통신에 강점을 보이지만,
트래픽 조정이나, Peer간의 동등한 위치의 상호 메세지 교환에는
약점이 있죠...(단방향 통신이 강합니다.)
그러나, 데이터 전송에 대한 정의를 수시로 조정할 수 있기 때문에
Message의 정의 자체에 대해서는 매우 유연합니다.
일관성이 있는 관리가 가능한 Site내의 host에서 사용하기에는
WSDL 설계부터 통신자체의 부하등을 따지면, 지나치게 비싸죠.
기업과 기업 혹은 Site와 site간의 통신에 더 적절합니다.

분면, 양자가 교환하는 데이터의 목적과 의도도 다르고,
그 필요성도 다른 것 같습니다.

어느쪽이 다른쪽을 완전히 대체하거 하는 성질의 것은 아닌 것 같습니다.

There is no spoon. Neo from the Matrix 1999.

atie의 이미지

creativeidler wrote:
...
Quote:
엔터프라이즈 어플리케이션이라면 웹 서비스 보다는 MQ에 xml을 주고 받는 방식이 현재로는 보다 일반적입니다.

어느 게 더 일반적인가.. 제가 알고 있는 근거를 늘어놔 본다면..

메이저 Java IDE에서 웹 서비스 자동화는 아주 잘 지원하고 있지만 MQ를 제대로 지원하는 경우는 그리 많이 못 봤습니다. 올초의 자바 컨퍼런스, 썬 테크 데이에서도 웹 서비스는 중요한 화두 중 하나였지만 MQ는 한 번 정도 나왔구요. 서점에 가도 웹 서비스 책 숫자가 MQ 책 숫자의 다섯 배는 넘을 겁니다. 이클립스 플러그인도 Web Service는 별도의 카테고리로 27개의 플러그인이 있지만 MQ는 하나 있는지도 잘 모르겠습니다. 구글 검색 결과도 웹서비스가 압도적으로 많고 여러 IT 관련 사이트에서도 웹서비스 관련 기사는 수도 없이 찾을 수 있는 반면 MQ 관련 기사는 찾기 쉽지 않습니다.

구체적인 사례를 봐도 정부 부문 SI에서는 웹서비스가 상당히 일반화되어서 SI 개발자를 괴롭히는 "연동"문제는 요즘 웹서비스로 풀고 있는 추세입니다.

...


위에 언급한 정량적, 통계적 근거라는 것보다 제가 언급한 위의 제품들이 단편적이라고 생각하지 않는다는 뜻 입니다.
자바 컨퍼런스나 썬 테크 데이에서는 MQ 이야기 보다는 JMS 이야기를 할 것이고, MQ에 대한 책자는 서점에서 보다는 해당사들의 웹싸이트에 있습니다. 이클립스 플러그인 없는 것은 당연하며, IBM의 메세지 브로커가 이클립스 기술로 제품화 되어 있고, MS의 Biztalk도 구해서 살펴 보시기 바랍니다. 구글에서는 MQ 또는 JMS로 검색을 하시면 됩니다.

그리고, 제가 다음의 인용을 모르고 있다고 생각하시는 것은 아니겠죠?

creativeidler wrote:
미들웨어 없이 직접 통신하는 케이스도 얼마든지 가능하고 또 실제로 많이 쓰이고 있으니까요.

짜장면, 짬뽕 건은 제가 그렇게 이야기 한 적이 없으니 언급을 하지 않겠습니다. 저는 "엔터프라이즈 어플리케이션"이라는 단서를 위에 달았고, 기업의 폐쇄적인 환경을 보호하는 기술적 추세는 웹서비스를 포함하거나 또는 웹서비스가 없이 SOA 구축하자는 것이 업계의 주장입니다.

저는 이 글타래에서는 여기까지만 하겠습니다. creativeidler님이 관련된 다른 주제로 글을 여시면 거기에는 참여를 해 보겠습니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

익명 사용자의 이미지

atie wrote:
"엔터프라이즈 어플리케이션"이라는 단서를 위에 달았고, 기업의 폐쇄적인 환경을 보호하는 기술적 추세는 웹서비스를 포함하거나 또는 웹서비스가 없이 SOA 구축하자는 것이 업계의 주장입니다.

엔터프라이즈 어플리케이션의 범주는 무엇인가요?

지리즈의 이미지

creativeidler wrote:
머, 웹서비스가 TCP/IP 레이어를 직접 사용하는 것에 비하면 당근 느리겠지만 덩치가 거대하다는 말은 좀 오버인 것 같습니다. 라이브러리 자체도 거대하지 않거니와 실제로 엔터프라이즈에서 높은 scalability를 요하는 환경에서도 널리 쓰이고 있으므로 속도 문제도 별로 크지 않다고 할 수 있죠. 아파치 정도의 퍼포먼스는 충분히 보장 받을 수 있습니다.

제 분야가 공장자동화쪽이라서 인지는 몰라도,
제 기준엔 웹서비스는 충분히 거대합니다.

4M Flash 하드를 가진 16M 메모리를 가진 임베디드에서 돌아가는 통신을
구축해야하는 경우도 비일비재하니깐요...
더 열악한 경우도 많죠...

저에게 있어서
"물리적으로 다른 기계에서 돌고 있고, 또 다른 종류의 프로그래밍 언어로 작성된 프로그램들이 있다고 가정합니다. 이 둘사이에 통신을 해야 할 때, 괜찮은 수단은 뭐가 있나요? "의 기준으로 볼때,
마이콤이나, PLC가 주류인 저희쪽 입장에선 TCP/IP도 덩치가 큰편인데,
XML파싱이 필요하는 웹서비스는 매우(? 어쩌면 가장) 사치스럽고 덩치가 크게 보입니다. :wink:

There is no spoon. Neo from the Matrix 1999.

creativeidler의 이미지

Quote:
제 분야가 공장자동화쪽이라서 인지는 몰라도,
제 기준엔 웹서비스는 충분히 거대합니다.

물론 임베디드 쪽에서 본다면 얘기가 다르죠. 하지만 질문하신 분이 소켓 통신이 1차로 떠올랐다고 하시는 걸 보면 TCP/IP 정도는 옵션이 아닌 디폴트로 생각해도 좋은 환경이겠죠. 그리고 지리즈님과 같은 열악한 하드웨어 제약조건이 있다면 질문하면서 그런 것도 밝혔겠죠. 그런 점을 생각해본다면 이미 XML 파싱이 부담스러운 상황은 아닐 겁니다. 또, 임베디드라도 ARM이나 Xscale 정도 쓰는 케이스라면 XML 파싱은 아무 것도 아니죠.

지리즈님 기준으로 그렇다는 것은 알겠습니다만 질문자의 기준으로 생각해야하지 않을까요? 질문자가 원하는 것은 질문자의 환경에서 어떤 것이 좋으냐지 지리즈님과 같은 16M 메모리를 써야하는 상황에서 어떤 것을 써야하느냐가 아닐 테니까요.

참고로, 그리고 표준 XML 파서가 아닌 좀더 심플한 파서를 사용한다면 XML 파싱의 로드를 자체 프로토콜의 스트링 토크나이저와 비슷한 수준으로 떨어뜨릴 수 있습니다. 어차피 TCP/IP로 통신해도 데이터들 분리하고 합치고 하는 작업들을 해야되는데 그걸 XML로 대신하는 것 뿐이니까 로드 차이는 그다지 많지 않습니다. 다만 N/W bandwidth가 문제가 되는 경우라면 또 다른 얘기겠죠. 사실 PC급 이상에서도 XML 파싱 성능이 크리티칼한 곳에서는 자체 제작해서 쓰기도 합니다.

creativeidler의 이미지

Quote:
위에 언급한 정량적, 통계적 근거라는 것보다 제가 언급한 위의 제품들이 단편적이라고 생각하지 않는다는 뜻 입니다.
자바 컨퍼런스나 썬 테크 데이에서는 MQ 이야기 보다는 JMS 이야기를 할 것이고, MQ에 대한 책자는 서점에서 보다는 해당사들의 웹싸이트에 있습니다. 이클립스 플러그인 없는 것은 당연하며, IBM의 메세지 브로커가 이클립스 기술로 제품화 되어 있고, MS의 Biztalk도 구해서 살펴 보시기 바랍니다. 구글에서는 MQ 또는 JMS로 검색을 하시면 됩니다.

자바 컨퍼런스, 썬 테크 데이에서 JMS 관련 얘기가 얼마나 있었는지, 그리고 웹 서비스 이야기가 얼마나 있었는지 비교해 보시기 바랍니다. 웹서비스가 압도적으로 많다는 것을 아시게 될 겁니다.

MQ에 대한 책자를 해당사의 웹사이트에서 찾을 수 있다면 전세계에 출판된 웹서비스 책 숫자와 MQ의 책 숫자로 비교를 해봐도 좋습니다. MQ 책 숫자가 웹서비스책 숫자 반이라도 될지 의문입니다. 물론 JMS책, MQ책 합쳐서 세도 좋습니다.

IBM 메세지 브로커, MS의 비즈토크 이야기는 역시나 웹서비스도 같이 지원하는 제품이기에 역시나 비교에는 도움이 안됩니다.
구글에서 MQ 또는 JMS로 검색한 결과를 합친 것보다 "Web Service" 하나로 검색한 결과가 두 배 정도 된답니다.

여전히 짜장면이 짬뽕보다 많이 팔린다는 근거로 중국집1에서도 짜장면 팔고 중국집2에서도 짜장면 판다는 얘기들을 하고 있으십니다. 비유가 맘에 안 드시더라도 찬찬히 대응시켜보면 논리적 비약이 어딘지는 아실 수 있을 꺼라 생각합니다만...

Quote:
저는 "엔터프라이즈 어플리케이션"이라는 단서를 위에 달았고, 기업의 폐쇄적인 환경을 보호하는 기술적 추세는 웹서비스를 포함하거나 또는 웹서비스가 없이 SOA 구축하자는 것이 업계의 주장입니다.

추세, 업계의 주장이 아니라 atie님 주변 업계의 주장이겠지요. 역시나 근거 없이 일반화된 주장을 하고 있으십니다. "그냥 그렇게 주장하는 사람도 있다" 정도면 누구나 동의할 수 있는 말이 될 텐데 왜 근거도 없이 일반화를 시키시는지 모르겠습니다.
atie의 이미지

creativeidler wrote:
...
Quote:
저는 "엔터프라이즈 어플리케이션"이라는 단서를 위에 달았고, 기업의 폐쇄적인 환경을 보호하는 기술적 추세는 웹서비스를 포함하거나 또는 웹서비스가 없이 SOA 구축하자는 것이 업계의 주장입니다.

추세, 업계의 주장이 아니라 atie님 주변 업계의 주장이겠지요. 역시나 근거 없이 일반화된 주장을 하고 있으십니다. "그냥 그렇게 주장하는 사람도 있다" 정도면 누구나 동의할 수 있는 말이 될 텐데 왜 근거도 없이 일반화를 시키시는지 모르겠습니다.

http://www.cio.com/archive/011504/soa.html

//creativeidler님, 도움이 안되는 이야기는 그만하는 것이 좋겠습니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

지리즈의 이미지

creativeidler wrote:
지리즈님 기준으로 그렇다는 것은 알겠습니다만 질문자의 기준으로 생각해야하지 않을까요? 질문자가 원하는 것은 질문자의 환경에서 어떤 것이 좋으냐지 지리즈님과 같은 16M 메모리를 써야하는 상황에서 어떤 것을 써야하느냐가 아닐 테니까요.

질문자의 환경이 어떤지 역시 읽는 사람의 느낌의 차이가 아닌가요?

vudghkzm wrote:
물리적으로 다른 기계에서 돌고 있고, 또 다른 종류의 프로그래밍 언어로 작성된 프로그램들이 있다고 가정합니다. 이 둘사이에 통신을 해야 할 때, 괜찮은 수단은 뭐가 있나요?

단번에 생각나는 것으로는 소켓 통신밖에 없는데요...

그 밖에 다른 방법이 있다면 어떤 것들이 있는지 알고 싶습니다.

원문에 분명 PC나 호스트가 아닌 "기계"라는
표현을 사용했기 때문에,
저로서는 충분히 그렇게 생각할 수 있다고 봅니다만...

엄밀히 말해서 질문자의 질문의 내용에서
어떤 환경을 유추하는 것은 무리라고 봅니다.

"물리적으로 다른 기계에서 돌고 있고,
또 다른 종류의 프로그래밍 언어로 작성된 프로그램들이 있다고 가정합니다.
이 둘사이에 통신을 해야 할 때, 괜찮은 수단은 뭐가 있나요?"

저는 윗글에서 제가 개발경험을 가진 통신환경을 모두 나열했고,
단연코 프로토콜 중에서는 웹서비스가 가장 무거운 편에
속하는 것은 사실이죠.

There is no spoon. Neo from the Matrix 1999.

creativeidler의 이미지


중국집3 추가인가요?

Quote:
creativeidler님, 도움이 안되는 이야기는 그만하는 것이 좋겠습니다.

꼭 이번 쓰레드가 아니더라도 이런 상황이 kldp에서 참 많이 벌어집니다. 중국집1, 2, 3을 근거로 중국집을 일반화하는... 머, 사실 이게 kldp에만 있는 현상은 아니고 이런 종류의 논리적 오류는 여기저기서 많이 보이긴 하죠. 전 그런 비논리적인 주장들이 kldp에서라도 안 보였으면 하는 것 뿐입니다.

그만하고 싶을 때 가장 좋은 방법은 자신이 먼저 그만두는 것이랍니다. 도움이 안된다고 생각해서 그만두고 싶다면 말릴 생각은 없습니다.

creativeidler의 이미지

Quote:
엄밀히 말해서 질문자의 질문의 내용에서
어떤 환경을 유추하는 것은 무리라고 봅니다.

네, 그럴지도 모릅니다. 그렇다면 더더욱 자신의 환경보다는 좀더 일반적인 프로그래밍 환경을 가정하는 것이 좋지 않을까요? 만약 지리즈님의 글이 다음과 같았다면 아주 합리적인 조언이 되었을 것입니다. 도움이 될지 안될지는 배제하더라도 말입니다.

Quote:
가용자원이 제약된 임베디드 같은 환경이라고 가정한다면
웹서비스는 그 유연성에 비해,
덩치가 거대하고, 또한 비동기식 통신밖에 지원하지 않으니
적절하지 않은 선택이 될수도 있습니다.

그리고 전혀 유추할 수 없는 것은 아니었죠. 적어도 두 가지 힌트는 있었으니까요. 제 추리가 맞을지 아닐지는 아직 모르지만요.

지리즈의 이미지

creativeidler wrote:
Quote:
가용자원이 제약된 임베디드 같은 환경이라고 가정한다면
웹서비스는 그 유연성에 비해,
덩치가 거대하고, 또한 비동기식 통신밖에 지원하지 않으니
적절하지 않은 선택이 될수도 있습니다.

그리고 전혀 유추할 수 없는 것은 아니었죠. 적어도 두 가지 힌트는 있었으니까요. 제 추리가 맞을지 아닐지는 아직 모르지만요.

임베디드 환경이 아니라도, 최소한 톰켓같은 WAS를 필요로하는
웹서비스환경이 결코 가볍다고 할 수 없죠.

Peer TO Peer 통신에서 웹서비스는
가장 사치스러운 선택이고, 그 다지 보편적인 선택 또한 아니죠.
굳이 임베디드라는 단서가 붙을 필요가 없습니다.

There is no spoon. Neo from the Matrix 1999.

죠커의 이미지

저는 soap 보다는 rest 쪽이 더 유망하다고 생각합니다. 소위 web 2.0이라고 불리는 서비스에서 rest에 더 친화적이거든요.

그리고 근거없는 편견인지 모르겠지만 soap보다는 rest가 더 가벼운 것 같습니다.

creativeidler의 이미지

Quote:
임베디드 환경이 아니라도, 최소한 톰켓같은 WAS를 필요로하는
웹서비스환경이 결코 가볍다고 할 수 없죠.

Peer TO Peer 통신에서 웹서비스는
가장 사치스러운 선택이고, 그 다지 보편적인 선택 또한 아니죠.
굳이 임베디드라는 단서가 붙을 필요가 없습니다.

음냐. 톰캣이 무겁다고 말씀하시다니... 혹시 아파치도 무겁다고 생각하시나요? AJAX도 웹서비스랑 비슷한데 네이버 검색창에서 추천검색어 나오는 창이 무겁다고 느끼시나요?

펜티엄 1GHz에서 1초에 몇 라인의 XML을 파싱할 수 있는지 아십니까? 무겁다 가볍다는 상대적인 개념입니다. 어셈블리가 C보다 빠르다고 전부 어셈블리로 프로그래밍하지는 않지 않습니까. 자바는 무거우니까 자바 안 쓰시겠습니까? DB 한 번만 갔다오는 애플리케이션이라면 웹서비스의 부하는 제로입니다. 병목지점이 되지 않는 이상 모든 종류의 무거움은 acceptable이죠.

굳이 Time to market 같은 이야기를 꺼내지 않더라도 웹서비스는 PC급 이상에서는 충분히 가볍습니다. PC급 이상에서 웹서비스 성능 문제로 서버 한대 더 추가해야한다거나 하는 사태가 생기지도 않습니다.

하나 더 짚고 넘어가자면, 톰캣은 WAS가 아니긴 하지만 어쨋든 통신을 하려면 톰캣처럼 WAS에 준하는 서버가 어느 한 쪽에는 돌고 있어야 하죠. 소켓 서버를 직접 만들든 Apache+PHP를 쓰든 mod_python을 쓰든 말이죠. 이건 웹서비스로 인한 부하가 아니라 통신 자체로 인한 부하입니다. 따져야하는 건 웹서비스로 인한 N/W 부하의 증가, 그리고 XML 파싱 부하의 증가이지 WAS가 필요해진다는 건 고려대상이 아닙니다.

익명 사용자의 이미지

저도 임베디드환경에 많이 관계됩니다만... 톰캣, 아파치... 엄청나게 무겁다고 생각합니다. 운이 아주 좋아야 펄로 만들어진 간이 웹서버를 사용하는데 ㅜ.ㅠ

그래서 결론은...
http://java.sun.com/developer/technicalArticles/WebServices/fastWS/
Fast Web Service 모델 괜찮다고 생각합니다. 서버단은 xml로 돌아가고 임베디드 단은 asn1. binary encoding으로 돌아가고...

creativeidler의 이미지

Quote:
저도 임베디드환경에 많이 관계됩니다만... 톰캣, 아파치... 엄청나게 무겁다고 생각합니다. 운이 아주 좋아야 펄로 만들어진 간이 웹서버를 사용하는데 ㅜ.ㅠ

열악한 자원의 임베디드 환경에서 웹서비스가 무겁다는 건 부인하지 않습니다. 무겁다 가볍다는 그걸 누가 드느냐에 달린 것이죠. 일곱살 짜리 어린아이에겐 2리터 짜리 물병 하나도 무거운 것이지만 역도 선수에게도 2리터 짜리 물병 하나가 무겁겠습니까?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.