본문 바로가기
2_ 매콤한컴퓨터세상

Mashup Service와 OpenAPI

by 준환이형님 2013. 7. 16.

예전부터 글을 쓰고 싶던 주제였는데.. 회사에서 스터디 자료를 만들게 되어 블로그에도 함께 포스팅을 하게 되었습니다.

여기에서 서비스의 개념, 정의와 개발하시는 분들을 위해 소스를 포함한 활용 실습까지 간단하게 해보려합니다.

 

 

둘 이상을 합쳐 새로운 하나로 만드는 혼합 서비스 - MashUp

상으로 제공되고 있는 정보나 서비스를 융합하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 것



매쉬업(매시업, Mash-Up)은 여러가지 곡이나 장르를 섞어 새로운 노래를 만들어내는 음악 용어가 어원이라고 합니다. IT에서는 네트워크상의 정보를 서로 연결하여 기존에 없던 새로운 서비스를 만들어내는 것을 뜻합니다. 이것은 2005년 폴 레이드매처(Paul Rademacher)가 기존의 부동산사이트에 구글 지도를 긁어와 하우징맵이라는 사이트를 서비스하였는데 오히려 구글에서는 그를 정식 직원으로 채용하고 정식으로 지도API를 서비스로 오픈했다는 일화로 유명하죠.

 


해킹을 통하거나 웹페이지의 소스를 긁어오는 방법보다는 기본적으로 포탈에서는 개발자의 편의를 위해 잘 가공된 정보를 제공하는데 이것을  OpenAPI라고 합니다. 그러니까 매쉬업은 OpenAPI를 활용한 제3의 서비스라고 이해할수 있겠네요. 

이러한 배경에는 Web 2.0 이 자리잡고 있는데,

 일방적인 기술과 정보제공자(포탈)중심의 Web 1.0 시대를 벗어나 플랫폼(HW : 데스크탑, 폰, 태블릿등 데스크탑, 폰, 태블릿,  SW : 크롬, 익플, 파이어폭스등 웹브라우저) 에 구애받지 않으며 사용자가 서로 참여하여 정보를 만들어가는 새로운 시대의 흐름이라고 볼 수 있습니다. 대표적인 서비스로 페북, 트윗, 위키피디아가 있습니다.


장점으로는 이미 개발되어 있는 서비스들을 소스로 하기 때문에 비용이 적게들고, 개발 기간이 짧습니다. 그리고 매쉬업 서비스를 하겠다고 아이템을 생각하게 된 것이라 보통 기존 시장에 없는 다양한 서비스로 내용이 참신합니다.


단점으로는 매쉬업서비스의 주제가 기존서비스의 기본틀을 벗어날 수는 없습니다. 조합할 소스가 적으면 매시업 종류도 제한되구요. 두번째로는 서비스가 안정적이지 못합니다. 1차 자원이 되는 서비스에 종속적으로 부동산+지도 서비스의 경우 한 쪽에서라도 서비스를 일방적으로 중단하면 2차 서비스 공급자인 매쉬업도 원할하게 서비스될 수 없으니까요.

 

활용 예_

기존에 노약자나 장애인들에게 트윗을 읽어주는 서비스인 트윗DJ(http://topnanis.tistory.com/167)

메모장에 기온과 날씨를 받아와 출력해주는 사무용 프로그램 포스트잇(http://topnanis.tistory.com/216)

 


구글을 제외, 국내에서 API를 제공하는 대표적 사이트는 아래와 같습니다. 시, 군, 도청 등에서도 공공정보 활용의 확대를 위해 API를 공개하고 매쉬업 대회를 여는 등 개발을 장려하고 있습니다. (버스위치, 날씨나, 위치정보 등..)


NAVER 개발자 센터 > OpenAPI : http://dev.naver.com/openapi/

다음 DNA 개발자 네트워크 : http://dna.daum.net/ 

공공 데이터 포털 : https://www.data.go.kr/

 

이것이 코드에 어떻게 적용 될 수 있는지 [네이버 API > 실시간 급상승 검색어] 로 예를 한번 들어보겠습니다.

과도한 정보 요청으로 서버 과부하를 막기위해 일일 25000 건 정도로 쿼리수를 제한하고 있습니다. 그러므로 발급받은 개인 Key를 샘플 URL "Key" 란에 넣어줍니다

 



화면과 같이 실시간 검색순위의 샘플 URL은 http://openapi.naver.com/search?key=test&query=nexearch&target=rank 와 같은데, 발급받은 키를 빨간글자 대신 넣어줍니다.

 

그래서 인터넷 주소창에 넣어주면

 


정상적으로 뜨네요. 프로그램에서는 해당 페이지에서 우측키를 누르면 확인할수 있는 [소스보기]의 문자열을 반환하는데, 이런식으로 조금 번거롭기는 하지만 API가 아니더라도 웹페이지 소스를 가져온뒤 잘 가공(파싱)하여 활용할 수 있겠지요. 

 

아래는 C# 키값을 포함한 웹 출력 예제 소스입니다.

 

APITest.zip

 

 

 static void Main(string[] args)
 {
            WebRequestFunc();            
  }

 

        static public void WebRequestFunc()
        { 
            //응답요청을 한다
            WebRequest request = null;
            WebResponse response = null;

            //스트림으로 받아온다
            Stream resStream = null;
            StreamReader resReader = null;

            try
            {    
                //URI로부터 요청을 생성한다
                request = WebRequest.Create("http://openapi.naver.com/search?key=ced958d8dd93ec524fe33faea01cd812&query=nexearch&target=rank ");

                //요청을 보내고 응답을 받는다
                response = request.GetResponse();

                //응답을 스트림으로 얻어온다
                resStream = response.GetResponseStream();
                resReader = new StreamReader(resStream);


                //결과를 출력
                string resString = resReader.ReadToEnd();
                Console.WriteLine(resString);
            }

            catch (Exception) { }

            return;
        }