12345
소프트웨어 공학   article search result : 2

1. SOA(Service Oriented Architecture)

 
< 일반적 개념의 SOA란 무엇인가?  >

먼저 SOA(서비스지향아키텍처)에서 이야기 하는 '서비스'를 이해할 필요가 있습니다.. SOA에서 이야기하는 서비스는 IT적인 개념이 아니고 비즈니스적인 용어로서 '특정한 기능을 하는 단위'를 서비스라고 합니다.
예를 들어, '항공권 예약' '호텔 예약' '고객 정보 조회' '예금' 같은 것을 서비스라고 할 수 있습니다. 즉 기업의 업무를 기능단위로 나눈 것을 '서비스'라고 합니다. 이러한 기능 단위는 크게 나누거나 보다 자세하게 나눌 수 있는데, '항공권 예약' 이라는 것도 사실 '항공 좌석 조회', '회원정보 조회', '좌석 배정' 같은 더 작은 서비스로 구성되어 있습니다. 그래서 기업 업무의 어떤 기능을 서비스화 할 것인지, 이러한 서비스 단위를 얼마나 작은 단위로 쪼갤 것인지 같은 것이 SOA의 핵심적인 사항이라 할 수 있겠습니다.
이야기가 길었습니다만, SOA라는 것은 이렇게 정의된 서비스를 배열하여 기업의 업무를 구현하는 방식을 말합니다. 그래서 SOA라는 것은 기업의 어떤 업무에서도 적용할 수 있는 일종의 IT 아키텍처의 사상이면서 아키텍처를 만드는 스타일을 말하는 것입니다. 그래서 SOA 기반 BPM, SOA 기반 CRM등이 모두 가능한 것입니다.

< 기업에서 왜 SOA가 필요한가? >

기업에서 SOA를 이야기하는 것은 '비즈니스 유연성' 혹은 '비즈니스 민첩성' 때문입니다. 한가지 예를 들어 A라는 은행이 새로운 상품 Y를 새로 출시하여 선풍적인 인기를 끌렀다고 한다면, 경쟁 은행인 B, C, D가 유사한 상품을 내놓으려고 합니다. 이때 SOA를 적용하지 않은 기존 시스템에서 새로운 상품을 개발한다면 시간이 많이 걸리게 됩니다. 먼저 현업에서 상품을 디자인하여 IT 기획에 넘기면 IT 기획에서는 이를 가능하게 하려고 기존 애플리케이션을 바꾸려고 합니다. 그 과정은 설계를 하고 설계에 맞추어 코딩을 하고 테스트 한 후 운영계로 옮겨 실제로 상품을 시장에 팔 수 있게 합니다. 이러한 과정이 3개월에서 4개월 걸리게 되는데, 그 3~4개월 동안 먼저 상품을 출시한 A은행이 시장을 석권하게 되는 것이지요. 시장에서는 항상 1등만을 기억하게 됩니다. 이러한 경우를 보게 되면 IT 시스템이 오히려 발목을 잡게 되는 것이지요. 만약 B은행이 A은행이 상품을 출시한 지 1~2주 만에 비슷한 상품을 내놓을 수 있으면 어떻게 될까요? 시장은 A와 B은행이 양분 하게 될 것입니다. 이렇듯 SOA는 기업들이 변화하는 시장 환경에 빠르게 대응할 수 있게 해 주기 때문에 기업의 '비즈니스 유연성' 또는 '비즈니스 민첩성'을 높여줍니다. 이것은 곧 기업의 경쟁력을 높여주어서 생존하고 성장할 수 있는 기반이 됩니다. 어떻게 이러한 것이 가능하느냐 하면, SOA는 미리 '서비스'들을 만들어서 저장소에 넣어놓았다가 현업 사용자가 저장된 서비스 들을 검색하여 필요한 서비스들을 골라 그 서비스들을 순서대로 작동하도록 배치하기 때문입니다. 그러한 과정은 현업 사용자가 툴을 사용하여 그림 그리듯이 쉽게 할 수 있습니다. 그렇게만 하면 바로 사용 가능한 애플리케이션을 만들어 내는 것입니다. 그렇기 위해서 개발자들은 필요한 모든 애플리케이션 컴포넌트를 미리 만들어 놓아야 합니다. 그래서 기존의 IT 시스템을 재활용하여 개발 속도를 빠르게 하기도 합니다. 


- 지디넷 코리아 : 정해영 부장(한국 IBM)


<  참고 사이트  >
http://blog.naver.com/image07/60023998658
http://blog.naver.com/iojazz?Redirect=Log&logNo=140013106892
http://www.codeway.co.kr/board/bbs/board.php?bo_table=ETC_Lecture&wr_id=79&page=7
http://cooljohn.egloos.com/4491965
http://younghoe.info/attachment/49682ce933adaCF.pdf
http://kwangshin.pe.kr/blog/?no=78

tagged with  SOA, 소프트웨어 공학
TRACKBACK ADDRESS : http://josuae.tistory.com/trackback/159 관련글 쓰기
이름 :
비밀번호 :
홈사이트 :
비밀글 :
요즘 SOA라는걸 보고 있는데, 정말 SOA라는거 이것을 봐서는 뭐가 뭔지 감도 안잡히는거 같습니다 =_=

그래서 원천적으로 SOA를 하기전에 OOP의 단점이 무엇일지 생각해 보았습니다.
생각해보니 절차지향 언어로부터 이어져와서 OOP는 LANGUAGE라는 플랫폼에 강결합(tightly-coupled)
라는 생각이 들었습니다. 정확히는 컴파일러 라고 해야할까요?

예를들면 자바에서 OOP을 이용하여 코딩을 하다가 C++에서 만든 클래스를 패키지와 해서
가져다가 그냥 쓸수 있을까요?
같이 OOP 이지만, 자바와 C++은 서로 직접적으로는 호환이 안되겠지요. 서로 문법이 미묘하게 틀리니까요
물론 C#과 JAVA도 그럴거 같구요.

결론적으로 플랫폼에 종속적인것이 OOP의 단점인것 같습니다.

음 그래서, 이제는 언어라는 플랫폼에 약결합(loosely-coupled)으로 하여 언어에 구애받지 않고, 자바와
닷넷, C++ 이라는 언어로 만들어진 객체들을 넘어 컴포넌트들을 언어에 구애받지 않고, 쓸수 있을수는
없을까요?

음 그래서 생각해 보건데, XML을 이용하면 될거 같아요. 서로 컴포넌트들간에 정보 교환을 할때,
XML을 이용한 공통된 형식을 만들어서, 독립적으로 만들어진 컴포넌트들간에 통신을 할수 있을거예요
그럼 XML을 이용해서 주고받고 할수 있겠지요.

따라서 플랫폼이 다른 컴포넌트라도 재사용이 가능할거 같습니다.

음 하지만 여기에서 다시 떠오르는게 일반 어플리케이션에서는 저런것이 힘들거 같기도 하네요.
예를들어 C++에서 만든 .EXE 어플리케이션을 실행하는데 JAVA로 만든 컴포넌트를 활용하기 위해
JVM을 이용한 .CLASS를 동시에 실행하고, 이러면 정작 프로그램을 사용하는 입장에서는 무언가
이상해 지겠죠? 

음 하지만 웹에서는 그냥 수월하게 할수 있을거 같아요.
PHP와 JSP로 만든 컴포넌트들이 존재할때, 각각 서버를 한대씩 만들어놓고 사용자가 하나의
처리를 요청하면 각자의 PHP와 JSP와의 메세지 교환을 통하여 처리후에 그걸 사용자에게
VIEW로 그냥 보여주기만 하면 되지 않을까요.

음 따라서, 이런 Object Oriented라는 관점의 중요성이 점차 줄어들고 서비스중심, 관점중심의 프로그램인
SOA, AOP라는게 나오지 않았나 생각이 되네요.

정말 초짜가 말하는거라, 틀린거나 조언해주실거 있으시는 분이 있으시면 괜찮을것 같습니다.
정말 어려워요 ㅠㅠ 정말 소프트웨어 공학이 어려워요 ㅠㅠ


tagged with  OOP, 소프트웨어 공학
TRACKBACK ADDRESS : http://josuae.tistory.com/trackback/160 관련글 쓰기
^^ 
wrote at 2009/07/29 10:06
oop<->soa 는 대립되는 개념이 아닙니다. 동일 비교 대상의 개념이 아니구요. oop는 오히려 아키텍처라기 보다는 그런 아키텍처가 가능하도록 하는 언어의 성격에 해당하겠지요. 그리고 님이 말하는 것이 Web Service란 개념입니다.
SOA도 여기에서 출발하구요.
wrote at 2009/07/29 12:46
아직도 고민고민하는 내용인데, 답변 감사드립니다..^^
제가 쓰고서도 제가 무슨소리를 하는지도 모르겠네요 =_=
이름 :
비밀번호 :
홈사이트 :
비밀글 :
*1 
ㅠㅠ
알립니다
episode
activity
blog
everyday
programming
portfolio
seminar
thinking
nonclassified
secret scrap
ipod touch
count total 68,923, today 7, yesterday 17