2008년 4월 16일 수요일

[스크랩] 스트레칭에 관하여

원문 URL : http://ironwing.co.kr/old/public_html/training/strach_.html

스트레칭에 대하여 : 양 날의 검 - 유연성

보통 유연성이 좋을수록 운동을 잘 할 것이라고 생각을 합니다. 어느 정도는 맞는 말입니다. 하지만, 일류 운동선수들이 반드시 매우 유연한 것은 아닙니다. 유연성이 뛰어나면 유리한 것이 사실이지만, 이것은 아주 상대적인 개념입니다.
유연성이 나쁘면 운동을 못하는 것은 사실입니다. 그렇지만 유연성이 보통 이상으로 뛰어나다고 해서 반드시 운동을 잘하는 것은 아닙니다. 유연성은 자신이 하고자 하는 운동에서 요구되는 수준을 소화할 수 있으면 됩니다.

마라톤 선수라면 그다지 유연성이 많이 요구되는 것이 아니기 때문에 유연성을 늘리기 위해서 너무 많은 시간을 소비할 필요는 없습니다. 물론 기계체조나 리듬체조 같은 종목의 선수라면 유연성이 필수적이기 때문에 많은 시간을 투자해야 합니다.

유연성에 대해서 양 날의 검이라고 하는 이유는 다음과 같습니다. 유연성 훈련은 근육을 부드럽게 하지만, 관절 주위의 결합조직을 약하게 만드는 결과를 가져옵니다. 어느 연구 보고서에 의하면 유연성이 나쁜 사람들은 근육의 경직이 잘 생기고, 유연성이 좋은 사람들은 관절의 염좌가 잘 생기는 것으로 보고 되었습니다.

유연성의 결정요인

stra1 stra12

유연성이 좋아지려면 근육이 부드럽게 잘 늘어나야 합니다. 하지만 근육이 내부에는 위의 그림처럼 근방추라는 것이 있어서 근육이 갑자기 늘어나는 것을 감지하는 장치가 있습니다. 근육이 갑자기 늘어나면 이 부분이 감지를 해서 근육을 갑자기 수축을 시키는 작용을 합니다. 이것 때문에 스트레칭 중에 경직이 생길 수도 있습니다.

그러나 유연성 훈련을 하면 근육이 부드럽게 됩니다. 종종 만화에서 보면 일류선수들은 근육이 부드러워서 근육 위를 눌러서 속의 뼈를 만질 수 있다고 합니다. 결국은 근육이 충분히 늘어날 수 있는 사람이 유연성이 좋아지는 것입니다. 하지만 이것말고 다른 결정 요인들이 있습니다.

그것은 바로 관절 주위의 결합조직입니다. 옆에서 보면 관절들은 관절의 마디를 이루는 뼈와 뼈들을 안정되게 유지하는 결합조직으로 이루어져 있습니다.(파란색으로 체크를 해놓은 부분이 인대입니다.) 이런 결합조직으로 인해서 관절의 안정성이 유지됩니다. 그러나 유연성이 좋아지려면 이런 결합조직들이 느슨해져야 유연성이 좋아집니다. 그러니까, 결국은 관절의 안정성이 떨어지게 되는 것입니다.

결론을 내리면 이렇게 됩니다. 유연성 운동을 꾸준히 해서 유연성이 좋아지면, 관절의 운동범위가 커지는 장점과 근육이 부드러워지는 장점을 가지고 있지만, 관절 자체의 안정성은 떨어지게 되는 것입니다. 그러니까, 유연성이 좋으면 관절의 염좌가 잘 생길 수 있다는 것에 대한 이해가 되지요. 하지만, 근육의 경직은 덜 생깁니다.
유연성은 자신이 어느 정도까지 필요한 것인가를 정하고 운동을 해야 합니다. 무턱대고 마냥 열심히 하면 나중에 남는 것은 반복되는 염좌입니다.

그러면 이제부터 유연성에 대한 몇 가지 기본 지식에 대해서 알아보고 유연성을 늘리는 실제적인 방법에 대해서 설명하겠습니다.


스트레칭 십계명

스트레칭의 장점에 대한 설명은 이미 했습니다. 이미 스트레칭을 하는 요령에 대해서 간단히 설명했지만, 좀 더 자세히 알아보겠습니다.

1) 긴장을 푼다
가볍게 뛰어서 몸을 따뜻하게 만든 다음에 스트레칭을 해야 합니다. 스트레칭은 관절의 결합 조직에 직접적으로 스트레스를 주고 근육을 최대한 늘어나게 만드는 운동이기 때문에 근육이 충분히 풀어지지 않으면 갑작스런 자극으로 근육에 무리를 주고 관절에 손상을 입히게 됩니다.

2) 반동을 쓰지 말고 천천히 움직인다
종종 발을 앞으로 힘껏 차면서 다리 뒤를 스트레칭하는 사람이 있는데 이것은 매우 위험한 일입니다. 스트레칭은 반동을 쓰면 근육이 심하게 경직될 수도 있고, 관절의 인대를 손상시킬 위험성이 높습니다.(근방추에서 이것을 감지해서 근육을 수축시킵니다.)

3) 호흡을 멈추지 않는다
이것은 모든 운동에 걸쳐서 강조되는 내용입니다. 숨을 멈추면 긴장을 하고 있다고 생각을 하면 됩니다. 스트레칭은 긴장을 풀고 하는 운동입니다.

4) 적당한 자극을 유지한다
좀 어렵지만, 너무 아플 때까지 스트레칭을 하면 안됩니다. 오히려 좋지 않은 결과를 가져옵니다. 스트레칭은 몸을 늘린 다음 그 자세를 10~30초 정도 유지할 수 있어야 합니다. 그 밑으로 유지를 하면 별로 효과가 없고 그보다 더 오래 참아도 효과에는 차이가 없습니다. 다른 책에서는 1분까지 버티라고 하는 책들도 있지만, 제가 보기에는 30초면 충분합니다.

5) 옆 사람은 신경쓰지 않는다
유연성은 사람에 따라서 많은 차이가 생깁니다. 유전적인 부분도 있을 것이고, 체형에 따라서 차이가 생기기도 합니다. 그렇기 때문에 옆 사람과 자신을 직접적으로 비교하는 것은 상당한 무리가 생깁니다. 그러니까 자신의 페이스에 맞추어서 무리하지 말아야 합니다.

6) 매일 운동해야 합니다
보통 지구력이나, 근력은 2일에 한 번만 해도 충분하지만, 유연성은 매일 운동을 해야지 효과를 최대로 얻을 수 있습니다. 근력은 같은 부위를 매일 운동하면 오히려 효과가 떨어지지만, 유연성은 매일 해주어야 효과가 좋습니다.

7) 전체적으로 스트레칭을 한다
자신에게 맞추어서 필요한 부분의 스트레칭을 집중할 수 있지만, 전체적인 유연성의 조화가 중요합니다. 신체의 일부분만 유연하면 상대적으로 유연하지 않은 부위에 많은 부담이 주어질 수도 있고, 오히려 유연한 부분만 많은 일을 하게 되는 경우도 있습니다. 그런 일을 방지하기 위해서 전체적인 유연성을 고려해야 합니다.

8) 간단한 동작부터 시작합니다
스트레칭은 아주 다양한 동작을 이용해서 유연성을 발달시킵니다. 우리가 알고 있는 자세들 중에서 부상을 유발하는 자세들도 있고, 초보자들이 따라하기에 무리가 있는 자세들도 많이 있습니다. 여기서는 쉬운 것에서부터 어려운 것까지 차례대로 설명하겠습니다. 자신에게 맞는 스트레칭을 찾으실 수 있습니다.

9) 스트레칭의 후유증은 하루를 넘기지 않아야 한다
스트레칭을 하고 다리가 아파서 며칠을 고생할 정도로 스트레칭을 했다면 그것은 완전히 무리한 것입니다. 그 정도로 스트레칭을 하면 근육과 관절의 결합조직이 손상을 입으면서 유연성을 기르는 결과를 가져옵니다. 원래 유연성을 늘리는 것만으로도 안정성이 떨어지는 데 관절의 손상을 주면서 유연성을 기르면 관절의 안정성은 더욱 떨어지게 되겠지요....

10) 정확한 자세와 주의 사항을 반드시 숙지해야 합니다
여기서는 정확한 자세와 주의 사항을 많이 설명할 것입니다. 이 부분을 주의해서 반드시 잘 이해하고 실천해주십시오.

어깨와 팔의 스트레칭

어깨는 우리 신체에서 가장 움직이는 각도가 큰 관절입니다. 그래서 어깨를 스트레칭을 할 때는 등이나 가슴의 스트레칭이 동시에 이루어집니다. 그리고, 당연히 팔의 스트레칭도 같이 이루어지게 됩니다.

어깨는 우리 몸에서 운동 범위가 가장 큰 관절이지만, 실제 생활에서는 어깨를 그렇게 다양한 각도로 움직이는 경우가 드물기 때문에 운동을 하거나 갑자기 일을 하게 될 경우에 무리를 하는 경우가 많습니다. 평소에 충분히 스트레칭을 한다면 어깨 결림이나, 어깨의 근육통은 예방할 수 있습니다.

arm1

1. 위 그림과 같이 한 손은 팔꿈치 뒤 부분을 감싸 안아줍니다.
2. 감싸 안은 팔을 뒤로 가볍게 당기면서 어깨 뒤를 충분히 늘려줍니다..

주의 사항-허리를 비틀지 않도록 주의하여야 합니다.

arm2

1. 그림과 같이 한 손으로 나머지 팔꿈치를 잡아줍니다.
2. 가볍게 당겨서 어깨와 삼두근을 스트레칭 시켜줍니다. 스트레칭을 할 때는 허리를 펴주고 상체가 뒤로 젖혀지지 않도록 합니다

arm3

1. 양손을 허리 뒤에서 깍지를 끼고 어깨의 긴장을 풀어줍니다.
2. 깍지를 낀 손을 위로 가볍게 들어 올려줍니다. 그렇게 하면 어깨와 가슴이 늘어나는 것을 느낄 수 있습니다.

arm4
그림과 같이 양손으로 양쪽 어깨 뒤쪽을 감싸 안은 다음에 양 견갑골 사이를 늘려주는 스트레칭입니다.
arm5
그림과 같이 손등이 등을 향하게 해서 등위에 올려 놓습니다. 이 상태에서 팔은 안쪽으로 약간만 비틀어주면 어깨가 스트레칭이 됩니다. 손을 너무 높이 위치시키려고 노력하지 마십시오. 어깨 관절 주위의 인대에 손상을 입을 수 있습니다.

arm6 양손을 등뒤에서 마주 잡아줍니다. 그리고, 천천히 반대방향으로 당겨줍니다

arm7 양손을 등뒤에서 마주 잡아줍니다. 그리고, 천천히 반대방향으로 당겨줍니다

 

몸통의 스트레칭

등은 일상 생활에서 가장 많이 긴장하게 되는 부분입니다. 하루 일과가 끝난 다음에는 반드시 등을 스트레칭을 시켜주면 좀 더 활기찬 생활을 할 수 있습니다. 허리 스트레칭에서 나온 고양이 스트레칭도 등을 스트레칭 시켜주는 자세입니다. 등을 스트레칭하는 동작들은 많이 있습니다. 하지만, 무리해서 등의 부상을 입으면 부상이 오래가고 자주 재발합니다.

body1 body3

1. 두 다리를 쭉 뻗은 상태에서 왼 다리를 접어서 오른쪽 다리의 무릎 바깥쪽으로 넘겨줍니다. 그 상태에서 오른팔을 이용해서 왼 다리의 바깥 쪽에 위치하게 합니다.
2. 그 상태에서 왼손으로 뒤를 짚어서 중심을 잡고 등을 똑바로 편 상태로 상체를 틀어줍니다.
주의 사항
등을 똑바로 펴준 상태로 비틀어 주어야 합니다. 등이 굽어지지 않도록 주의하여 주십시오.

옆 동작과 비슷하지만, 뻗은 다리를 접은 상태에서 비틀어줍니다. 어려운 스트레칭이기 때문에 위의 동작을 충분히 연습해서 유연성이 좋아진 다음에 하셔야 합니다.

body2 body4

그림과 같이 어깨와 머리를 땅에 대고 거꾸로 서서 다리를 넘겨주는 동작입니다. 주의를 해야 하는 것은 머리를 땅에서 들어올리거나 어깨가 땅에서 떨어지면 안되고 너무 무리해서 발가락을 바닥에 닿게 하려고 하면 목에 많은 부담을 줄 수도 있습니다. 무리하지 않는 선에서 해야 합니다.

양 무릎과 양손으로 땅을 짚은 상태에서 엉덩이를 발꿈치 위에 놓으면 됩니다. 손을 멀리 뻗는 기분으로 스트레칭을 하면 등 쪽의 광배근이 늘어나게 됩니다.
body5 body6

누워서 그림과 같이 양 무릎을 가슴까지 끌어당겨줍니다. 양손으로 허벅지를 당겨서 등을 늘려주는 효과를 가질 수 있습니다.

1. 엎드려서 어깨 부근에 손을 위치합니다. 허벅지와 골반을 바닥에 붙여서 고정합니다.
2. 그 상태에서 양 팔을 밀어서 천천히 상체를 들어올립니다. 이 때 얼굴을 앞을 보거나 시선은 아래를 향하게 해야 합니다

body9 body99
1. 무릎과 손을 바닥에 대고 등을 완전히 펴줍니다. 골반에서부터 목까지 완전히 펴서 척추를 완전히 펴주는 동작입니다. 2. 이렇게 잠깐 유지한 다음에 다시 척추를 완전히 굽혀주는 동작으로 들어갑니다. 골반에서 목 부분까지 다 앞으로 구부려주는 동작입니다. 등을 동그랗게 말아준다고 생각하고 운동하면 됩니다. 이 동작은 고양이 스트레칭이라고 합니다

하체의 스트레칭

허벅지 뒤쪽의 스트레칭을 할 때는 등도 같이 스트레칭이 됩니다. 너무 무리해서 스트레칭을 하면 등에 많은 무리가 주어지기 때문에 등의 부상도 발생할 수 있습니다.

 

leg1

leg2

1. 그림과 같이 앉아서 오른 다리는 뻗어서 앞으로 향하게 하고 왼 다리는 발바닥을 허벅지 안쪽에 붙여서 접어줍니다.
2. 그 상태에서 등을 똑바로 편 상태로 앞으로 상체를 구부려줍니다. 이 때 등의 굽어지지 않도록 주의하십시오. 반대편도 해줍니다.

**이마를 무릎에 대는 것이 아닙니다. 무릎은 약간 구부려도 괜찮습니다.(로킹은 피하는 것이 좋습니다.)

leg3

그림과 같이 다리를 앞뒤로 벌립니다. 앞으로 내민 다리는 무릎을 구부리고, 발목의 각도가 직각이 되도록 합니다. 허리 부분을 약간 아래로 내려줍니다.

주의 사항

무릎이 발가락보다 앞으로 나아가면 무릎에 많은 압력이 주어지고, 원하는 부위에 스트레칭이 이루어지지 않습니다.

leg6

1. 그림과 같이 똑바로 서서 발등을 잡고서 나머지 손으로 벽이나 기둥을 잡아서 중심을 잡아줍니다.
2. 발꿈치를 엉덩이 방향으로 당겨주면서 허벅지 앞 쪽이 늘어나는 것을 느끼면서 스트레칭을 합니다. 천천히 당기면서 무리하지 마십시오. 상체를 뒤로 젖히지 않도록 주의해야 합니다.

1. 앉아서 두 다리를 동시에 앞으로 뻗어줍니다.

2. 이 상태에서 등을 똑바로 편 상태로 상체를 앞으로 숙여줍니다. 등이 굽어지지 않도록 주의하십시오.

leg4

그림과 같이 양 발바닥을 땅바닥에 붙이고 발목을 세워서 주저 앉은 상태로 상체를 앞으로 숙여줍니다. 골반을 스트레칭 시켜주는 자세입니다.

leg5

그림과 같이 양 발바닥을 땅바닥에 붙이고 발목을 세워서 주저 앉은 상태로 상체를 앞으로 숙여줍니다. 골반을 스트레칭 시켜주는 자세입니다.

leg7

2. 그 상태에서 양 발목을 잡고서 무릎을 바닥으로 낮추어서 허벅지 안쪽을 스트레칭 시켜줍니다

목, 손목, 발목의 스트레칭


손목과 발목은 일상 생활에서 많이 사용하는 부분입니다. 따라서 생각 밖으로 많은 피로가 누적된 부분입니다. 충분한 스트레칭으로 피로를 풀어주는 것이 좋습니다. 목은 다양한 각도로 운동이 가능합니다. 피곤할 때나 책상에 오래 앉아있은 다음에 충분히 스트레칭을 시켜주십시오.

*** 목을 여러 방향으로 움직이는 것이 좋습니다. 목을 스트레칭을 할 때 종종 어지러운 경우가 있습니다. 주로 고개를 뒤로 젖히는 동작에서 어지러울 수 있습니다. 너무 무리하지 마십시오.

 

neck1 neck2
목을 앞으로 숙이는 자세입니다. 손으로 가볍게 당겨주십시오.(힘을 주지는 마십시오.)

고개를 뒤로 젖히는 동작입니다. 목을
가볍게 풀어준다는 생각으로 운동을
하시면 됩니다.

neck3 neck4
그림과 같이 손바닥을 눌러서 손목을 스트레칭을 시켜줍니다.

손등을 가볍게 눌러서 손목을 스트레칭을시켜줍니다

 

neck5 neck6

그림과 같이 앉아서 발목을 돌리면서 스트레칭을 시킵니다.

1.종아리 근육을 스트레칭시키는 방법입니다. 양손으로 벽을 짚은 상태에서 그림과 같이 한쪽 다리를 뒤로 빼고 다른 한쪽은 앞으로 내밉니다. 2.그 자세에서 앞으로 내민 다리의 무릎을 구부리면서 엉덩이를 앞으로 약간만 밀어주면 종아리의 근육을 스트레칭 시킬 수 있습니다.

다시 Web 프로그래밍을 공부해 볼까?

Web 프로그래밍을 다시 공부해 볼까?

블로깅을 시작하다 보니 남들의 화려한 블로그들에 비해 밋밋하다 못해

썰렁하기만 한 내 블로그에 이쁜 옷을 입혀주고도 싶고

차별화된 독특한 기능을 넣고 싶어진다.

개다가 여러가지 아이디어들을 실험해 보고 싶은 생각이 든다.

하지만 배워야 할 것이 너무나 많다.

너무 오랫동안 웹 관련 지식에 대한 습득을 게을리 했다.

그래도.. 조금씩이라도 시간을 내서 공부를 해봐야겠다.

우선 HTML, CSS, JavaScript부터 다시..

그리고 XML도 다시 공부해야 한다. 이것은 Web뿐만이 아니라

당장 실질적인 업무와도 관련된다.

공부하자.. 공부하자..

[스크랩]`계란` 먹으면 `콜레스테롤` 높아진다고?





계란을 피하고 하루 8잔의 물을 마셔라. 탄수화물을 많이 먹으면 뚱뚱해진다'는 등의 영양학적 조언이 수 년동안 권장되어 왔으나 이 같은 조언이 사실인지에 대해서는 의문이 제기되어 왔다.
동부워싱턴대학(Eastern Washington University) 레보비치 박사팀의 연구결과 이것은 반드시 사실이 아닌 바 연구팀은 이 같은 일반적으로 잘못 알고 있는 일부 영양학적 오해에 대해 지적했다.
계란을 먹으면 콜레스테롤이 높아진다'는 믿음은 계란의 노른자가 어느 음식보다 대단히 농축된 양의 콜레스테롤을 함유한다는데서 비롯됐다.
이에 대해 연구팀은 적당량의 계란 섭취는 건강에 위협이 될 정도로 심각한 양의 콜레스테롤을 함유하지는 않는다고 말했다.
대부분의 사람들이 계란을 피하고 어떤 형태든 심혈관질환을 가진 사람이라면 의사들도 계란을 먹지 말라고 조언하고 있는 가운데 연구팀은 매일 한 두 개 정도의 계란을 먹는 것은 콜레스테롤 수치에 큰 변화를 주지 않는다고 말했다.
탄수화물을 먹으면 뚱뚱해진다'는 속설에 대해서 연구팀은 식사중 탄수화물 섭취를 제한 하는 것이 체내 탄수화물 저장의 감소로 인한 수분 소실에 의해 체중을 줄일수 있으나 적당량의 탄수화물 섭취가 직접 체중증가를 유발하지는 않는다고 말했다.
하루 8잔 물을 마셔라'는 믿음에 대해 연구팀은 사람들이 호흡이나 소변이나 땀을 통한 수분 배출만큼 수분 보충이 필요하지만 반드시 하루 8잔 정도의 물을 마셔야 할 필요는 없다고 말했다.
연구팀은 대부분의 수분 필요량은 다른 식품 섭취나 식사중 취해지는 바 지나친 수분 섭취가 체내 염분 농도의 균형을 초래 저나트륨혈증을 유발 건강에 해가 될 수 있다고 말했다.
연구팀은 또한 비타민 보충제를 매일 먹는 사람들에 대해 적당량의 저지방 우유와 단백질 섭취를 통한 적당량의 칼로리 섭취와 함께 과일, 야채, 전곡류등을 고루 고루 섭취하는 것이 비타민 보충제 복용보다 낫다고 말했다.

【서울=메디컬투데이/뉴시스】

[스크랩] Mashup

번역문:

Mashup 소개
출처 : IBM 한국 DeveloperWorks (Link)
난이도 : 초급

Duane Merrill, Writer, Freelance

2006 년 10 월 31 일

mashup 은 대화형 웹 애플리케이션의 한 장르로서, 외부 데이터 소스에서 가져온 콘텐트를 사용하여 완전히 새롭고 혁신적인 서비스를 만듭니다. 비공식적으로 Web 2.0이라고 알려진 2 세대 웹 애플리케이션을 의미하기도 합니다. 이 글에서는 mashup의 의미, 오늘날 구현되는 대중적인 mashup들, mashup 개발자들이 애플리케이션을 구현할 때 활용하는 기술들을 소개합니다. 또한, mashup 개발자들이 직면한 기술적, 사회적인 많은 문제점들도 있습니다.

머리말

신종 웹 기반 데이터 통합 애플리케이션이 인터넷을 통해 자라나고 있다. 비공식적으로 mashups이 라고 불리는 이 애플리케이션은 대화형 사용자 참여를 강조하고, 자기 파괴적인 방식으로 서드 파티 데이터를 한데 모은다. mashup에 대한 정의는 다음과 같다; mashup 웹 사이트는 웹에 기반하여, 외부의 데이터 소스에서 가져온 콘텐트와 기능을 사용한다.

mashup의 모호한 데이터 통합에 대한 정의는 정확한 것은 아니다. mashup을 생각하는 가장 좋은 방법은 이 용어의 어원을 생각해 보는 것이다. 대중 음악에서 차용된 것으로, mashup은 (보통 다른 장르에 속한) 두 개의 다른 노래들에서 보컬과 악기 트랙을 혼합한 새로운 노래이다. “잡종 팝송(bastard pop)” 과 마찬가지로, mashup은 콘텐트를 비정상적이고 혁신적으로 혼합한다. (종종 관련성이 없는 데이터 소스에서도 가져온다.) 전산 소비가 아닌 인간이 소비할 수 있도록 만들어진다.

그렇다면, mashup은 과연 어떤 모습일까? ChicagoCrime.org 웹 사이트는 매핑 mashup의 좋은 예제이다. 언론에서 광범위한 대중성을 확보한 첫 번째 mashup 중 하나인 이 웹 사이트는 Chicago Police Department의 온라인 데이터베이스에서 얻은 범죄 데이터를 Google Maps의 지도 제작법과 혼합한다. 사용자들은 이 mashup 사이트와 인터랙팅 할 수 있다. 이를 테면, South Chicago의 최근 모든 강도 사건의 상세를 나타내는 푸쉬업(pushup)을 포함한 지도를 지리적으로 디스플레이 할 수 있다. 개념과 표현은 단순하고, 범죄와 지도 데이터의 합성은 시각적으로 강력한 힘을 발휘한다.

In mashup 장르에서는, 매핑 mashup을 포함한 대중적인 mashup 장르를 연구할 것이다. 관련 기술에서는 mashup의 구현과 작동과 관련된 기술을 검토할 것이다. 기술적 문제사회적 문제 섹션에서는 시급한 기술적, 사회적인 도전 과제들을 규명할 것이다.

mashup 장르

이 섹션에서는, 대표적인 mashup 장르를 간단히 설명할 것이다.

매핑 mashup

정 보 기술 세대에서, 사람들은 물건과 행위에 대한 상당한 데이터를 모으게 된다. 두 가지 모두 위치에 대한 주석이 달린다. 위치 데이터를 포함하고 있는 이 모든 데이터들은 지도를 사용하여 지리적으로 표현되고 있다. mashup이 등장하기 까지 가장 큰 촉매제가 된 것 중 하나가 Google의 Google Maps API이다. 이것은 웹 개발자들(취미 활동가, 사상가, 기타)이 모든 데이터들(핵 재앙에서부터 보스턴의 CowParade까지) 지도로 가져왔다. Microsoft (Virtual Earth), Yahoo (Yahoo Maps), AOL (MapQuest)의 API들이 바로 뒤를 이었다.

비디오 mashup과 사진 mashup

사 진 호스팅과 Flickr 같은 소셜 네트워킹 사이트와 사진 공유를 표방하는 API들이 등장하면서 다양한 mashup들이 생겨나고 있다. 이러한 콘텐트 프로바이더들은 그들이 호스팅 하고 있는 이미지와 관련된 메타데이터(누가 사진을 찍었는지, 어떤 사진인지, 어디서 언제 찍었는지 등)를 갖고 있기 때문에, mashup 디자이너들은 사진을 이 메타데이터와 제휴될 수 있는 다른 정보들과 혼합한다. 예를 들어, 하나의 mashup이 노래 가사나 시를 분석하고 관련 사진들의 모자이크나 콜라주를 만들 수 있고, 또는 공통적인 사진 메타데이터(제목, 타임스탬프, 기타 메타데이터)에 기반하여 소셜 네트워킹 그래프를 디스플레이 한다. (CNN 뉴스 사이트 같은) 웹 사이트에서 뉴스의 단어들을 사진들과 매칭시키는 방식으로 텍스트를 렌더링 할 수 있다.

검색 mashup과 쇼핑 mashup

검 색과 쇼핑 mashup은 mashup이라는 용어가 생겨나기 전부터 존재했다. 웹 API 전에, BizRate, PriceGrabber, MySimon, Google Froogle 같은 비교 쇼핑 톨들은 b2b 기술이나 screen-scraping의 결합을 사용하여 가격 비교 데이터들을 모았다. mashup과 기타 웹 애플리케이션들을 활용하기 위해, eBay와 Amazon 같은 사용자 마켓플레이스는 이들의 콘텐트에 프로그래밍 방식으로 액세스 할 수 있는 API를 만들었다.

뉴스 mashup

뉴 스 소스(New York Times, BBC, Reuters)는 2002년부터 RSS와 Atom 같은 신디케이션 기술을 사용하여 다양한 토픽과 관련된 뉴스 피드를 보급했다. 신디케이션 피드 mashup은 사용자의 피드를 모아서 웹에 나타낸다. 독자의 특수한 취향에 맞게 제공되는 개인적인 신문을 만든 것이다. Diggdot.us가 한 예인데, 이는 기술 관련 뉴스 소스인 Digg.com, Slashdot.org, Del.icio.us 등에서 피드를 결합한다.


위로

관련 기술

이 섹션에서는 mashup의 개발에 활용할 수 있는 기술들을 살펴보도록 하겠다. 기술에 대한 자세한 내용은 참고자료 섹션을 참조하기 바란다.

아키텍처

mashup 애플리케이션은 논리적으로나 물리적으로 떨어진(네트워크와 구성 영역에 의해 분리된 것 같다.) 세 개의 다른 참여자들로 구성된다: API/콘텐트 프로바이더, mashup 사이트, 클라이언트의 웹 브라우저.

  • API/ 콘텐트 프로바이더. 이들은 혼합되는 콘텐트의 공급자들이다. ChicagoCrime.org mashup 예제에서, 공급자는 Google과 Chicago Police Department가 된다. 데이터를 가져올 수 있도록 하기 위해, 공급자는 REST, 웹 서비스, RSS/Atom 같은 웹 프로토콜을 통해서 웹 콘텐트를 노출한다. 하지만 많은 잠재적인 데이터 소스는 아직까지는 편리한 방법으로 API를 노출하지 않는다. Wikipedia, TV Guide, 그리고 가상의 모든 정부 및 공공 도메인 웹 사이트에서 콘텐트를 추출하는 mashup은 스크린 스크래핑 기술을 사용하여 이를 사용한다. 이러한 상황에서, 스크린 스크래핑이 의미하는 것은, 원래 인간이 소비하기로 되어있는 공급자의 웹 페이지를 파싱하여, 콘텐트 프로바이더에서 정보를 추출하는 과정을 의미한다.
  • mashup 사이트. 이곳은 mashup이 호스팅 되는 장소이다. 여기에 mashup 로직이 있다는 이유 때문에 여기에서는 반드시 실행될 필요가 없다. 반면, mashup은 자바 서블릿, CGI, PHP, ASP 같은 서버 측 동적 콘텐트 생성 기술을 사용하는 전통적인 웹 애플리케이션과 비슷하게 구현될 수 있다.

    또는, mashup 콘텐트는 클라이언트 측 스크립팅(JavaScript)이나 애플릿을 통해 클라이언트의 브라우저에서 직접 생성될 수도 있다. 이러한 클라이언트 측 로직은 mashup의 웹 페이지에 직접 삽입된 코드와 스크립팅 API 라이브러리나, 이러한 웹 페이지들이 참조하는 애플릿들의 결합이다. 이 방식을 사용하는 mashup을 rich internet applications (RIA)이라고 하는데, 대화형 사용자 경험을 강조한다는 뜻을 내포하고 있다. (리치 인터넷 애플리케이션은 "Web 2.0"이 표방하고 있는 것이다.) 클라이언트 측에서 혼합할 때의 이점은 mashup 서버를 대신하기 때문에 오버헤드가 적고(데이터는 콘텐트 프로바이더에서 직접 가져올 수 있다.), 보다 완벽한 사용자 경험이 가능하다는 점이다. (페이지들은 전체 페이지를 리프레쉬 하지 않고도 콘텐트의 일부만 업데이트할 것을 요청할 수 있다.) Google Maps API는 브라우저 측 JavaScript를 통한 액세스를 위한 것이고, 클라이언트 측 기술의 한 예가 된다.

    종종 mashup은 서버 측 로직과 클라이언트 측 로직의 결합을 사용하여 데이터를 모은다. 많은 mashup 애플리케이션들은 자신들에게 직접 제공된 데이터를 사용하여, (적어도) 한 개의 데이터 세트는 로컬로 만든다. 게다가, 다중 소스 데이터("Kevin Bacon과 공동 주연을 했던 영화 배우가 사들인 평균 부동산 가격")에 대한 복잡한 쿼리는 클라이언트의 웹 브라우저 내에서 많은 일을 수행해야 한다.

  • 클라이언트의 웹 브라우저. 이곳에서 애플리케이션은 그래픽으로 실행되고, 사용자 인터랙션이 발생한다. 앞서 설명한 것처럼, mashup은 종종 클라이언트 측 로직을 사용하여 혼합 콘텐트를 조합 및 합성한다.

Ajax

Ajax 가 약어(어떤 사람은 "Asynchronous JavaScript + XML"의 합성으로 본다.)인지 아닌지에 대한 논의가 있다. Ajax는 특정 기술이기 보다는 웹 애플리케이션 모델이라고 할 수 있다. 비동기식 로딩과 콘텐트의 표현에 초점을 맞춘 여러 기술들을 구성하고 있다.:

  • 스타일 표현을 위한 XHTML과 CSS
  • 동적 디스플레이이와 인터랙션에 의해 노출된 Document Object Model (DOM) API
  • 비동기식 데이터 교환, 일반적으로 XML 데이터
  • 브라우저-측 스크립팅, 주로 JavaScript

이 러한 기술들이 함께 사용될 때, 그 목적은 사용자 액션 후에 전체 페이지를 재 로딩 및 재 실행 하기 보다는, 소량의 데이터를 콘텐트 서버와 교환하여 보다 원활한 사용자 경험을 만들어 내는 것이다. JavaScript에서 구현된 다양한 Ajax 툴킷과 라이브러리(Sajax 또는 Zimbra)에서 mashup용 Ajax 엔진들을 구현할 수 있다. Google Maps API에는 상용 Ajax 엔진이 포함되어 있고, 사용자 경험 역시 강력하다. 페이지 재 로드를 실행하는 조작 화살표나 트랜슬레이션 화살표에 대한 스크롤바가 없다는 점에서 진정한 로컬 애플리케이션처럼 작동한다.

웹 프로토콜: SOAP과 REST

SOAP 과 REST는 원격 서비스들과 통신하는 플랫폼 중립적인 프로토콜이다. 서비스 지향 아키텍처 패러다임의 일부로서, 클라이언트는 SOAP과 REST를 사용하여 기반 플랫폼에 대한 지식 없이도 원격 서비스들과 인터랙팅 할 수 있다. 서비스의 기능은 요청 및 응답 받은 메시지의 디스크립션에 의해 전달된다.

SOAP은 웹 서비스 패러다임의 기본 기술이다. 원래, Simple Object Access Protocol의 약어였던 SOAP은 Services-Oriented Access Protocol (또는 그냥 SOAP)으로 개명되었다. 초점이 객체 지향 시스템에서 메시지 교환의 상호 운용성으로 이동했기 때문이다. SOAP 스팩에는 두 개의 핵심 요소가 있다. 첫 번째는 플랫폼 중립적인 인코딩을 위한 XML 메시지 포맷이고, 두 번째는 헤더와 바디로 구성된 메시지 구조이다. 헤더는 애플리케이션 페이로드(바디), 이를 테면, 인증 정보에 국한되지 않는 콘텍스트 정보를 교환한다. SOAP 메시지 바디는 애플리케이션 스팩의 페이로드를 캡슐화 한다. 웹 서비스용 SOAP API는 WSDL 문서로 기술되는데, 서비스가 노출하는 작동, 메시지 포맷(XML Schema 사용), 접근 방법 등이 설명되어 있다. SOAP 메시지는 HTTP를 통해 전달되지만, 다른 트랜스포트(JMS 또는 이메일)도 가능하다.

REST는 Representational State Transfer의 약어로서, HTTP와 XML을 사용한 웹 기반 통신 기술이다. 단순함과 프로파일의 부족 때문에 SOAP과 분리되고 매력도 떨어진다. 현대 프로그래밍 언어에서 찾을 수 있는 동사 기반 인터페이스(getEmployee(), addEmployee(), listEmployees() 같은 다양한 메소드로 구성됨)와는 달리, REST는 근본적으로 모든 정보 조각에 사용할 수 있는 몇 가지 연산들(POST, GET, PUT, DELETE)만 지원한다. REST에서 강조하는 것은 리소스라고 하는 정보이다. 예를 들어, 사원에 대한 정보 기록은 URI로 구분되고, GET 연산을 통해 가져오고, PUT 연산으로 업데이트 되는 식이다. 따라서 REST는 SOAP 서비스의 document-literal 스타일과 비슷하다.

스크린 스크래핑

앞서 언급했던 것처럼, 콘텐트 프로바이더에서 오는 API의 부족 때문에, mashup 개발자들이 스크린 스크래핑에 의존하여 그들이 혼합하고자 하는 정보를 가져온다. 스크래핑(Scraping)은, 프로그래밍 방식으로 사용 및 조작될 수 있는 정보의 시맨틱 데이터 구조를 추출하기 위해, 소프트웨어 툴을 사용하여 인간이 소비하도록 작성된 콘텐트를 파싱하고 분석하는 프로세스이다. 일부 mashup은 데이터 획득에 스크린 스크래핑 기술을 사용한다. 특히, 공공 섹터에서 데이터를 가져올 때 그렇다. 예를 들어, 부동산 매핑 mashup은 지도 제작 공급자의 지도와 판매 또는 임대 리스팅을 스크랩 된 “comp” 데이터를 혼합할 수 있다. 데이터를 스크래핑 하는 또 다른 mashup 프로젝트로는 XMLTV가 있는데, 이것은 전 세계, TV 리스트를 모으는 툴의 컬렉션이다.

스크린 스크래핑은 세련되지 않은 솔루션으로 간주된다. 여러 가지 이유가 있다. 두 개의 근본적인 단점들이 있기 때문이다. 첫 번째는 인터페이스를 가진 API와는 달리, 스크래핑은 콘텐트 프로바이더와 콘텐트 소비자 간 지정된 프로그램 방식의 콘트랙트가 없다. 스크래퍼는 소스 콘텐트의 모델과 관련하여 툴을 디자인 해야 하고, 공급자는 지속적으로 표현 모델에 의존해야 한다. 웹 사이트는 룩앤필을 주기적으로 정비하여 스타일을 유지해야 한다. 툴이 이 일을 하지 못하기 때문에 스크래퍼의 고통만 늘어난다.

두 번째 문제는 고급의, 재사용 가능한 스크린 스크래핑 툴킷 소프트웨어, 즉 scrAPIs의 부족이다. 이 같은 API와 툴킷이 부족한 이유는 각 스크랩핑 툴이 애플리케이션을 필요로 하기 때문이다. 때문에 많은 개발 오버헤드가 생기고, 개발자들은 콘텐트를 역 엔지니어링 하고, 데이터 모델을 개발하며, 공급자 사이트에서 미가공 데이터를 파싱 및 모아야 한다.

시맨틱 웹과 RDF

스 크린 스크래핑의 세련되지 못한 특성은 인간이 소비하도록 만들어진 콘텐트가 자동화된 머신이 소비하기에 좋은 콘텐트가 되지 못한다는 사실에서 기인한다. 시맨틱 웹은, 기존 웹이 머신도 읽을 수 있는 정보를 사용하여 인간을 위해 설계된 콘텐트를 보완하도록 증가될 수 있다고 표방한다. 시맨틱 웹이라는 정황에서, 정보는 데이터와는 다르다. 데이터가 의미를 전달할 때에는 정보가 된다. 시맨틱 웹의 목적은 의미를 전달하는 메타데이터를 가진 데이터를 보강하여, 자동화, 통합, 추론, 재사용에 맞는 웹 인프라스트럭처를 만드는 것이다.

Resource Description Framework (RDF)로 알려진 W3C 스팩군은 데이터를 기술하는 문법 구조를 확립하는 방식을 제공한다. XML로는 충분하지 않다. 같은 데이터를 기술하는데 많은 방식으로 코딩 할 수 있다는 점에서 너무 모호하다. RDF-Schema는 RDF의 기능에 추가되어 머신이 읽을 수 있는 방식으로 인코딩 한다. 일단 데이터 객체가 데이터 모델에서 기술될 수 있다면, RDF는 subject-predicate-object(subject의 S는 relationship R과 object O를 갖고 있다.)를 통해서 데이터 객체들 간 관계 구조를 제공한다. 데이터 모델과 관계 그래프의 결합은 온톨로지의 생성에 적용되고, 이는 검색 및 추론될 수 있는 계층적 지식 구조가 된다. 예를 들어, it "eats" other "animal-type" 라는 제약 조건을 가진 "animal-type"의 하위 클래스로서 "carnivore-type" 모델을 정의할 수 있고, 이것에 대한 두 개의 인스턴스를 만든다. 하나는 치타와 북극곰과 이들의 습성과 관련된 데이터로 전개되고, 또 다른 하나는 가젤과 펭귄과 이들 각각의 습성과 관련된 데이터를 전개할 수 있다. 추론 엔진은 이러한 개별 모델 인스턴스들을 “혼합”하고 치타가 펭귄이 아닌 가젤을 잡아먹는다는 추론을 내린다.

RDF 데이터는 다양한 분야에서 빠르게 채택되고 있다. 소셜 네트워킹 애플리케이션(FOAF -- Friend of a Friend)과 신디케이션(RSS)도 한 예이다. 게다가, RDF 소프트웨어 기술과 컴포넌트는 어느 정도 성숙해졌고, 특히 RDF 쿼리 언어(RDQL과 SPARQL)와 프로그래밍 프레임웍과 추론 엔진(Jena와 Redland) 분야가 성장했다.

RSS와 ATOM

RSS 는 XML 기반 신디케이션 포맷의 일부이다. 신디케이션은 콘텐트를 배포하고자 하는 웹 사이트가 RSS 문서를 만들고 이 문서를 RSS 퍼블리셔로 등록한다. RSS가 실행되는 클라이언트는 퍼블리셔의 피드에서 새로운 콘텐트를 검사하고 알맞은 방식으로 이에 대응한다. RSS는 뉴스 아티클과 헤드라인, CVS checkins나 wiki pages용 changelog, 프로젝트 업데이트, 라디오 프로그램 같은 오디오 데이터까지, 광범위한 콘텐트를 합성한다. Version 1.0은 RDF 기반이지만, 최신 2.0 버전은 그렇지 않다.

ATOM은 새롭지만 더 유사한 신디케이션 프로토콜이다. Internet Engineering Task Force (IETF)의 제안 표준이고 RSS 보다 더 좋은 메타데이터를 관리 할 방법을 모색하고 있으며, 더 좋은 문서를 제공하고, 구조 개념을 일반 데이터 표현에 적용한다.

이러한 신디케이션 기술은 뉴스와 웹로그 애그리게이터 같은 이벤트 기반 콘텐트 또는 업데이트 중심 콘텐트를 모으는 mashup에는 잘 맞는다.


위로

기술적 문제

다른 데이터 통합 분야와 마찬가지로, mashup 개발에는 기술적 문제들이 많이 있다. 특히 mashup 애플리케이션들은 더욱 많은 기능들을 갖추어야 한다. 이 섹션에서는 몇 가지 문제점들을 규명해보도록 하겠다.

데이터 통합 문제: 시맨틱 의미와 데이터 품질

오늘날 기업의 제 1의 IT 관심사는 엔터프라이즈 가상 구조에 데이터 통합하기라는 조사가 있었다. 가상 구조(virtual organization)는 연합 비즈니스 단위의 합성이며, 각각은 관리 도메인 안에 포함되어 있음을 의미한다.) (현재 비즈니스 조건들을 반영하는 기업 대시보드를 만들기 위해) 레거시 데이터 소스를 통합해야 하는 도전에 직면한 많은 엔터프라이즈 IT 관리자들과 마찬가지로, mashup 개발자들도 이종의 데이터 세트 간 공유 시맨틱 의미를 추출해야 한다는 비슷한 도전 과제를 안고 있다. 따라서, mashup 개발자가 무엇을 해야 하는지 알고 싶다면 엔터프라이즈 IT가 직면한 통합 문제를 검토해 봐야 한다.

예 를 들어, 데이터 모델들 간 트랜슬레이션 시스템들이 설계되어야 한다. 데이터를 일반 형식으로 변환할 때, 매핑이 완전한 것이 아닐 때 추론이 이루어진다. (예를 들어, 하나의 데이터 소스가 하나의 모델을 가질 수 있고, 주소 유형에는 국가 필드가 포함되어 있는 반면, 다른 것은 그렇지 않다.) mashup 개발자들은 소스 데이터 모델 분야에는 전문가가 될 수 없다. 이 모델은 이들에게는 서드 파티에 해당하고, 추론은 매력적이거나 명확하지 못하다.

소실된 데이터나 불완전한 매핑 외에도, mashup 디자이너는 그들이 통합하고자 하는 데이터가 머신 자동화에 맞지 않다는 것을 알게 된다. 정리가 필요하다. 예를 들어, 법 집행 체포 기록은 일관성 없이 입력될 수 있다. 이름을 줄여서 쓰고(어떤 곳에서는, "mkt sqr"로, 또 다른 곳에서는 "Market Square"로 표기한다.), 추론이 어렵게 된다. RDF 같은 시맨틱 모델링 기술은, 데이터 스토어에 빌트인 된다면, 다른 데이터 세트들 간 자동화 추론 문제를 완화시킨다. 레거시 데이터 소스들은 시맨틱 모델링 기술에 사용되기 전에 분석과 데이터 청소의 관점에서 인간의 노력이 많이 필요하다.

mashup 개발자들은 IT 통합 매니저가 겪지 않은 여러 문제들과도 싸워야 한다. 이중 하나가 데이터 오염 문제이다. 이들의 애플리케이션 디자인의 일부로서, 많은 mashup들은 퍼블릭 사용자 인풋을 끌어들인다. WIKI 애플리케이션 도메인에서 분명해졌듯이, 이는 양날이 선 칼이다. 공개 기여와 데이터 혁신을 가능케 하기 때문에 강력하지만, 일관성 없고, 부정확 하게, 또는 의도적으로 데이터 입력을 유도한다. 후자는 데이터 신뢰성에 대해 의심하게 되고, 이는 mashup이 제공하는 가치를 충분히 상쇄한다.

mashup 개발자들이 직면한 또 다른 통합 문제는 스크린 스크래핑 기술이 데이터 획득에 사용될 때 발생한다. 이전 섹션에서도 설명했지만, 파싱과 수집 툴과 데이터 모델을 추출하는 데는 상당한 역 엔지니어링이 필요하다. 이러한 툴과 모델이 만들어지는 최고의 상황에서도, 소스 사이트가 콘텐트를 표현하는 방식을 리팩토링 해야 한다. 따라서 통합 프로세스에 제동이 걸리고 mashup 애플리케이션 오류로 이어진다.

컴포넌트 문제

Ajax 모델의 웹 개발은 보다 풍부하고 완벽한 사용자 경험을 제공할 수 있지만, 난점도 안고 있다. Ajax는 브라우저의 클라이언트 측 스크립팅 기능과 DOM을 결합하여 브라우저 디자이너가 생각하지 못했던 콘텐트 전달 방식을 이룩해야 한다. (아마도 Ajax의 해킹 특성에 기인한 것 같다.) 하지만, 이는 Ajax 기반 애플리케이션을 Microsoft created Internet Explorer 이후 웹 디자이너를 난감하게 하는 같은 브라우저 호환성 문제로 가져온다. 예를 들어, Ajax 엔진은 XMLHttpRequst 객체를 사용하여 원격 서버들과 비동기식으로 데이터를 교환한다. Internet Explorer 6에서, 이 객체는 원시 JavaScript가 아닌 ActiveX로 구현된다.

보 다 근본적으로는, Ajax의 경우, 사용자 브라우저 안에 JavaScript가 실행되어야 한다. 하지만 JavaScript를 지원하지 않거나 실행되지 않는 브라우저나 자동화 툴을 사용하는 특정 사용자들도 있기 마련이다. 이 같은 툴 세트로는 인터넷과 인트라넷 검색 엔진용 정보를 모으는 로봇, 스파이더, 웹 크롤러 등이 있다. Ajax 기반 mashup 애플리케이션은 소수의 사용자 기반과 검색 엔진 가시성을 잃게 된다.

페이지 내에 비동기식으로 콘텐트를 업데이트 할 때 JavaScript를 사용하면 사용자 인터페이스 문제가 생긴다. 콘텐트는 더 이상 브라우저의 주소 바에 있는 URL로 연결되지 않기 때문에, 사용자는 브라우저의 백(back) 버튼의 기능과 BOOKMARK 기능을 기대할 수 없다. Ajax는 비점증적 콘텐트 업데이트를 요청함으로써 레이턴시를 줄일 수 있지만, 형편 없는 디자인 때문에 사용자 경험이 엉망이 되고, 업데이트의 세분성은 양에 비해 너무 적고 업데이트 오버헤드는 가용 리소스를 갉아먹는다. 또한, 인터페이스 로드나 콘텐트가 업데이트 되는 동안 사용자(진행 바 같은 비주얼 피드백을 가진)사용자를 지원해야 한다.

분산된, 크로스 도메인 애플리케이션과 마찬가지로, mashup 개발자와 콘텐트 프로바이더는 보안 문제도 다루어야 한다. 아이디의 개념은 성가신 주제가 될 수 있다. 전통적인 웹은 익명 액세스용으로 구현되었다. 싱글사인온은 바람직한 기능이지만, 많은 기술들이(Microsoft Passport에서 Liberty Alliance 까지)있고, 반드시 통합되어야 하는 아이디 네임스페이스에 부조화를 만든다. 콘텐트 프로바이더는 자신들의 API에 인증과 권한 스킴을 적용하여(보안 아이디나 안전하게 구분할 수 있는 애트리뷰트 개념이 필요하다.) 유료 등록자나 민감한 데이터가 포함된 비즈니스 모델에 실행해야 한다. 민감한 데이터는 기밀성(암호화)이 필요하고, 이들을 다른 소스들과 결합할 때 특별한 주의를 기울여야 한다. 아이디는 감사와 규제 순응에 필수적이다. 게다가, 서버와 클라이언트 측에서 발생하는 데이터 통합의 경우, 사용자부터 mashup 서비스까지 아이디와 보안이 필요하다.


위로

사회적 문제

이전 섹션에서 설명한 기술적 문제 외에도, mashup이 대중성을 확보하면서 생기는 사회적인 문제도 있다.

mashup 개발자들이 직면한 가장 큰 사회적 문제들 중 하나는 지적 재산의 보호와 소비자 프라이버시 대 공정 사용과 정보의 자유로운 흐름 간 대립이다. 무식한 콘텐트 프로바이더(스크린 스크래핑의 표적)와 데이터 검색을 위해 API를 노출하는 콘텐트 프로바이더들은 자신들의 콘텐트가 승인되지 않는 방식으로 사용되고 있다는 것을 알아야 한다. 웹 애그리게이션과 규제와 관련하여, 참고자료를 참조하라.

mashup 웹 애플리케이션 장르는 아직 유아기에 머물러 있다. 여가 시간에 많은 mashup을 만드는 정도이다. 이러한 개발자들은 보안 같은 문제들을 인식하지 못한다. 게다가, 콘텐트 프로바이더는 머신 기반 콘텐트 액세스에 API를 제공하는 것의 가치를 이제서야 깨닫기 시작했고, 많은 사람들은 이것을 중요한 비즈니스 문제로 간주하지 않는다. 이러한 사실들이 결합하여 저질의 소프트웨어를 양산하고, 테스팅과 품질 보증 같은 우선순위들은 개념 입증과 혁신의 뒤로 물러나 있다. 커뮤니티는 보다 성숙한 소프트웨어 개발 프로세스를 위해서 오픈 표준과 재사용 가능한 툴킷들을 조합해야 한다.

mashup이 재미있는 장난감에서 세련된 애플리케이션으로 변모하기 전에, 강력한 표준, 프로토콜, 모델, 툴킷 등의 제반 사항들이 해결되어야 한다. 많은 소프트웨어 개발 리더, 콘텐트 프로바이더, 기업가들이 mashup의 가치, 즉 mashup이 귀중한 비즈니스 모델이라는 것을 인식해야 한다. API 프로바이더는 자신들의 콘텐트에 요금을 부과할 것인지의 여부를 결정해야 하고, 부과할 것이라면, 그 방법도 모색해야 한다. (예를 들어, 등록비 또는 사용료) 아마도, 다양한 서비스 품질이 제공될 것이다. eBAY나 Amazon 같은 프로바이더들은 자신들의 API를 무료로 사용할 수 있도록 하는 운동을 벌이고 있다. mashup 개발자들은 광고 기반의 수익 모델을 모색하거나, 흥미진진한 mashup 애플리케이션을 개발해야 할 것이다.


위로

요약

mashup 은 웹 애플리케이션의 신종 장르이다. 시맨틱 웹에서 기인한 데이터 모델링 기술을 약결합, 서비스 지향, 플랫폼 중립의 통신 프로토콜과 결합하면, 웹에서 사용할 수 있는 거대한 정보를 활용 및 통합할 수 있는 애플리케이션을 위한 인프라스트럭처를 제공하게 된다. mashup 애플리케이션이 대중성을 얻어가면서, 공정 사용과 지적 재산권, 그리고 그리드 컴퓨팅과 b2b 워크플로우 관리 같은 사회적 문제들에 어떤 영향을 미치는지를 보는 것도 재미있는 일이다.

mashup 개발에 대해 자세히 알고 싶다면 developerWorks의 새로운 튜토리얼 시리즈를 기대하기 바란다. mashup 구현 방법을 설명할 예정이다. 시맨틱 웹 기술과 온톨로지를 사용하여 자신의 mashup을 구현하는 방법을 설명할 것이다.

 

원문:


developerWorks  >  XML | Web development  >

Mashups: The new breed of Web app

An introduction to mashups


Level: Introductory

Duane Merrill (duane@duanemerrill.com), Writer, Freelance

08 Aug 2006
Updated 16 Oct 2006

Mashups are an exciting genre of interactive Web applications that draw upon content retrieved from external data sources to create entirely new and innovative services. They are a hallmark of the second generation of Web applications informally known as Web 2.0. This introductory article explores what it means to be a mashup, the different classes of popular mashups constructed today, and the enabling technologies that mashup developers leverage to create their applications. Additionally, you'll see many of the emerging technical and social challenges that mashup developers face.

Introduction

A new breed of Web-based data integration applications is sprouting up all across the Internet. Colloquially termed mashups, their popularity stems from the emphasis on interactive user participation and the monster-of-Frankenstein-like manner in which they aggregate and stitch together third-party data. The sprouting metaphor is a reasonable one; a mashup Web site is characterized by the way in which it spreads roots across the Web, drawing upon content and functionality retrieved from data sources that lay outside of its organizational boundaries.

This vague data-integration definition of a mashup certainly isn't a rigorous one. A good insight as to what makes a mashup is to look at the etymology of the term: it was borrowed from the pop music scene, where a mashup is a new song that is mixed from the vocal and instrumental tracks from two different source songs (usually belonging to different genres). Like these "bastard pop" songs, a mashup is an unusual or innovative composition of content (often from unrelated data sources), made for human (rather than computerized) consumption.

So, what might a mashup look like? The ChicagoCrime.org Web site is a great intuitive example of what's called a mapping mashup. One of the first mashups to gain widespread popularity in the press, the Web site mashes crime data from the Chicago Police Department's online database with cartography from Google Maps. Users can interact with the mashup site, such as instructing it to graphically display a map containing pushpins that reveal the details of all recent burglary crimes in South Chicago. The concept and the presentation are simple, and the composition of crime and map data is visually powerful.

In Mashup genres, you'll survey the popular genres of mashups, including mapping mashups. Related technologies overviews the technology landscape that relates to the construction and operation of mashups. Technical challenges and Social challenges present the eminent technical and social challenges, respectively, affecting mashups.

Mashup genres

In this section, I give a brief survey of the prominent mashup genres.

Mapping mashups

In this age of information technology, humans are collecting a prodigious amount of data about things and activities, both of which are wont to be annotated with locations. All of these diverse data sets that contain location data are just screaming to be presented graphically using maps. One of the big catalysts for the advent of mashups was Google's introduction of its Google Maps API. This opened the floodgates, allowing Web developers (plus hobbyists, tinkerers, and others) to mash all sorts of data (everything from nuclear disasters to Boston's CowParade cows) onto maps. Not to be left out, APIs from Microsoft (Virtual Earth), Yahoo (Yahoo Maps), and AOL (MapQuest) shortly followed.

Video and photo mashups

The emergence of photo hosting and social networking sites like Flickr with APIs that expose photo sharing has led to a variety of interesting mashups. Because these content providers have metadata associated with the images they host (such as who took the picture, what it is a picture of, where and when it was taken, and more), mashup designers can mash photos with other information that can be associated with the metadata. For example, a mashup might analyze song or poetry lyrics and create a mosaic or collage of relevant photos, or display social networking graphs based upon common photo metadata (subject, timestamp, and other metadata.). Yet another example might take as input a Web site (such as a news site like CNN) and render the text in photos by matching tagged photos to words from the news.

Search and Shopping mashups

Search and shopping mashups have existed long before the term mashup was coined. Before the days of Web APIs, comparative shopping tools such as BizRate, PriceGrabber, MySimon, and Google's Froogle used combinations of business-to-business (b2b) technologies or screen-scraping to aggregate comparative price data. To facilitate mashups and other interesting Web applications, consumer marketplaces such as eBay and Amazon have released APIs for programmatically accessing their content.

News mashups

News sources (such as the New York Times, the BBC, or Reuters) have used syndication technologies like RSS and Atom (described in the next section) since 2002 to disseminate news feeds related to various topics. Syndication feed mashups can aggregate a user's feeds and present them over the Web, creating a personalized newspaper that caters to the reader's particular interests. An example is Diggdot.us, which combines feeds from the techie-oriented news sources Digg.com, Slashdot.org, and Del.icio.us.


Back to top

Related technologies

This section gives an overview of the technologies that are facilitating the development of mashups. For further information about any of these technologies, consult Resources at the end of this article.

The architecture

A mashup application is architecturally comprised of three different participants that are logically and physically disjoint (they are likely separated by both network and organizational boundaries): API/content providers, the mashup site, and the client's Web browser.

  • The API/content providers. These are the (sometimes unwitting) providers of the content being mashed. In the ChicagoCrime.org mashup example, the providers are Google and the Chicago Police Department. To facilitate data retrieval, providers often expose their content through Web-protocols such as REST, Web Services, and RSS/Atom (described below). However, many interesting potential data-sources do not (yet) conveniently expose APIs. Mashups that extract content from sites like Wikipedia, TV Guide, and virtually all government and public domain Web sites do so by a technique known as screen scraping. In this context, screen scraping connotes the process by which a tool attempts to extract information from the content provider by attempting to parse the provider's Web pages, which were originally intended for human consumption.
  • The mashup site. This is where the mashup is hosted. Interestingly enough, just because this is where the mashup logic resides, it is not necessarily where it is executed. On one hand, mashups can be implemented similarly to traditional Web applications using server-side dynamic content generation technologies like Java servlets, CGI, PHP or ASP.

    Alternatively, mashed content can be generated directly within the client's browser through client-side scripting (that is, JavaScript) or applets. This client-side logic is often the combination of code directly embedded in the mashup's Web pages as well as scripting API libraries or applets (furnished by the content providers) referenced by these Web pages. Mashups using this approach can be termed rich internet applications (RIAs), meaning that they are very oriented towards the interactive user-experience. (Rich internet applications are one hallmark of what's now being termed "Web 2.0", the next generation of services available on the World Wide Web.) The benefits of client-side mashing include less overhead on behalf of the mashup server (data can be retrieved directly from the content provider) and a more seamless user-experience (pages can request updates for portions of their content without having to refresh the entire page). The Google Maps API is intended for access through browser-side JavaScript, and is an example of client-side technology.

    Often mashups use a combination of both server and client-side logic to achieve their data aggregation. Many mashup applications use data that is supplied directly to them by their user base, making (at least) one of the data sets local. Additionally, performing complex queries on multiple-sourced data (such as "Show me the average purchase price for real estate bought by actors who have co-starred in movies with Kevin Bacon") requires computation that would be infeasible to perform within the client's Web browser.

  • The client's Web browser. This is where the application is rendered graphically and where user interaction takes place. As described above, mashups often use client-side logic to assemble and compose the mashed content.

Ajax

There is some dispute over whether the term Ajax is an acronym or not (some would have it represent "Asynchronous JavaScript + XML"). Regardless, Ajax is a Web application model rather than a specific technology. It comprises several technologies focused around the asynchronous loading and presentation of content:

  • XHTML and CSS for style presentation
  • The Document Object Model (DOM) API exposed by the browser for dynamic display and interaction
  • Asynchronous data exchange, typically of XML data
  • Browser-side scripting, primarily JavaScript

When used together, the goal of these technologies is to create a smooth, cohesive Web experience for the user by exchanging small amounts of data with the content servers rather than reload and re-render the entire page after some user action. You can construct Ajax engines for mashups from various Ajax toolkits and libraries (such as Sajax or Zimbra), usually implemented in JavaScript. The Google Maps API includes a proprietary Ajax engine, and the effect it has on the user experience is powerful: it behaves like a truly local application in that there are no scrollbars to manipulate or translation arrows that force page reloads.

Web protocols: SOAP and REST

Both SOAP and REST are platform neutral protocols for communicating with remote services. As part of the service-oriented architecture paradigm, clients can use SOAP and REST to interact with remote services without knowledge of their underlying platform implementation: the functionality of a service is completely conveyed by the description of the messages that it requests and responds with.

SOAP is a fundamental technology of the Web Services paradigm. Originally an acronym for Simple Object Access Protocol, SOAP has been re-termed Services-Oriented Access Protocol (or just SOAP) because its focus has shifted from object-based systems towards the interoperability of message exchange. There are two key components of the SOAP specification. The first is the use of an XML message format for platform-agnostic encoding, and the second is the message structure, which consists of a header and a body. The header is used to exchange contextual information that is not specific to the application payload (the body), such as authentication information. The SOAP message body encapsulates the application-specific payload. SOAP APIs for Web services are described by WSDL documents, which themselves describe what operations a service exposes, the format for the messages that it accepts (using XML Schema), and how to address it. SOAP messages are typically conveyed over HTTP transport, although other transports (such as JMS or e-mail) are equally viable.

REST is an acronym for Representational State Transfer, a technique of Web-based communication using just HTTP and XML. Its simplicity and lack of rigorous profiles set it apart from SOAP and lend to its attractiveness. Unlike the typical verb-based interfaces that you find in modern programming languages (which are composed of diverse methods such as getEmployee(), addEmployee(), listEmployees(), and more), REST fundamentally supports only a few operations (that is POST, GET, PUT, DELETE) that are applicable to all pieces of information. The emphasis in REST is on the pieces of information themselves, called resources. For example, a resource record for an employee is identified by a URI, retrieved through a GET operation, updated by a PUT operation, and so on. In this way, REST is similar to the document-literal style of SOAP services.

Screen scraping

As mentioned earlier, lack of APIs from content providers often force mashup developers to resort to screen scraping in order to retrieve the information they seek to mash. Scraping is the process of using software tools to parse and analyze content that was originally written for human consumption in order to extract semantic data structures representative of that information that can be used and manipulated programmatically. A handful of mashups use screen scraping technology for data acquisition, especially when pulling data from the public sectors. For example, real-estate mapping mashups can mash for-sale or rental listings with maps from a cartography provider with scraped "comp" data obtained from the county records office. Another mashup project that scrapes data is XMLTV, a collection of tools that aggregates TV listings from all over the world.

Screen scraping is often considered an inelegant solution, and for good reasons. It has two primary inherent drawbacks. The first is that, unlike APIs with interfaces, scraping has no specific programmatic contract between content-provider and content-consumer. Scrapers must design their tools around a model of the source content and hope that the provider consistently adheres to this model of presentation. Web sites have a tendency to overhaul their look-and-feel periodically to remain fresh and stylish, which imparts severe maintenance headaches on behalf of the scrapers because their tools are likely to fail.

The second issue is the lack of sophisticated, re-usable screen-scraping toolkit software, colloquially known as scrAPIs. The dearth of such APIs and toolkits is largely due to the extremely application-specific needs of each individual scraping tool. This leads to large development overheads as designers are forced to reverse-engineer content, develop data models, parse, and aggregate raw data from the provider's site.

Semantic Web and RDF

The inelegant aspects of screen scraping are directly traceable to the fact that content created for human consumption does not make good content for automated machine consumption. Enter the Semantic Web, which is the vision that the existing Web can be augmented to supplement the content designed for humans with equivalent machine-readable information. In the context of the Semantic Web, the term information is different from data; data becomes information when it conveys meaning (that is, it is understandable). The Semantic Web has the goal of creating Web infrastructure that augments data with metadata to give it meaning, thus making it suitable for automation, integration, reasoning, and re-use.

The W3C family of specifications collectively known as the Resource Description Framework (RDF) serves this purpose of providing methodologies to establish syntactic structures that describe data. XML in itself is not sufficient; it is too arbitrary in that you can code it in many ways to describe the same piece of data. RDF-Schema adds to RDF's ability to encode concepts in a machine-readable way. Once data objects can be described in a data model, RDF provides for the construction of relationships between data objects through subject-predicate-object triples ("subject S has relationship R with object O"). The combination of data model and graph of relationships allows for the creation of ontologies, which are hierarchical structures of knowledge that can be searched and formally reasoned about. For example, you might define a model in which a "carnivore-type" as a subclass of "animal-type" with the constraint that it "eats" other "animal-type", and create two instances of it: one populated with data concerning cheetahs and polar bears and their habitats, another concerning gazelles and penguins and their respective habitats. Inference engines might then "mash" these separate model instances and reason that cheetahs might prey on gazelles but not penguins.

RDF data is quickly finding adoption in a variety of domains, including social networking applications (such as FOAF -- Friend of a Friend) and syndication (such as RSS, which I describe next). In addition, RDF software technology and components are beginning to reach a level of maturity, especially in the areas of RDF query languages (such as RDQL and SPARQL) and programmatic frameworks and inference engines (such as Jena and Redland).

RSS and ATOM

RSS is a family of XML-based syndication formats. In this context, syndication implies that a Web site that wants to distribute content creates an RSS document and registers the document with an RSS publisher. An RSS-enabled client can then check the publisher's feed for new content and react to it in an appropriate manner. RSS has been adopted to syndicate a wide variety of content, ranging from news articles and headlines, changelogs for CVS checkins or wiki pages, project updates, and even audiovisual data such as radio programs. Version 1.0 is RDF-based, but the most recent, version 2.0, is not.

Atom is a newer, but similar, syndication protocol. It is a proposed standard at the Internet Engineering Task Force (IETF) and seeks to maintain better metadata than RSS, provide better and more rigorous documentation, and incorporates the notion of constructs for common data representation.

These syndication technologies are great for mashups that aggregate event-based or update-driven content, such as news and weblog aggregators.


Back to top

Technical Challenges

Like any other data integration domain, mashup development is replete with technical challenges that need to be addressed, especially as mashup applications become more feature- and functionality-rich. This section touches on a handful of these challenges, some of which you can address and mitigate, while others are open issues.

Data Integration Challenges: Semantic Meaning and Data Quality

Qualitative surveys suggest that the number one enterprise IT concern today is data integration within the enterprise virtual organization. (In this context, I use the term virtual organization to mean a composition of federated business units, each contained within its own administrative domain.) Like many enterprise IT managers who find themselves up to the task of integrating legacy data sources (for example, to create corporate dashboards that reflect current business conditions), mashup developers are faced with the analogous challenges of deriving shared semantic meaning between heterogeneous data sets. Therefore, to get an idea for what mashup developers have in store,you need look no further than the storied integration challenges faced by enterprise IT.

For example, translation systems between data models must be designed. When converting data into common forms, reasonable assumptions often have to be made when the mapping is not a complete one (for example, one data source might have a model in which an address-type contains a country-field, whereas another does not). Already challenging, this is exacerbated by the fact that the mashup developers might not be domain experts on the source data models because the models are third-party to them, and these reasonable assumptions might not be intuitive or clear.

In addition to missing data or incomplete mappings, the mashup designer might discover that the data they wish to integrate is not suitable for machine automation; that it needs cleansing. For example, law enforcement arrest records might be entered inconsistently, using common abbreviations for names (such as "mkt sqr" in one record and "Market Square" in another), making automated reasoning about equality difficult, even with good heuristics. Semantic modeling technologies, such as RDF, can help ease the problem of automatic reasoning between different data sets, provided that it is built-in to the data-store. Legacy data sources are likely to require much human effort in terms of analysis and data cleansing before they can be availed to semantic modeling technologies.

Mashup developers might also have to contend with several issues that IT integration managers might not, one of which is data pollution. As part of their application design, many mashups solicit public user input. As evidenced in the wiki application domain, this is a double-edged blade: it can be quite powerful because it enables open contribution and best-of-breed data evolution, yet it can be subject to inconsistent, incorrect, or intentionally misleading data entry. The latter can cast doubts on data trustworthiness, which can ultimately compromise the value provided by the mashup.

Another host of integration issues facing mashup developers arise when screen scraping techniques must be used for data acquisition. As discussed in the previous section, deriving parsing and acquisition tools and data models requires significant reverse-engineering effort. Even in the best case where these tools and models can be created, all it takes is a re-factoring of how the source site presents its content (or mothballing and abandonment) to break the integration process, and cause mashup application failure.

Component Challenges

The Ajax model of Web development can provide a much richer and more seamless user experience than the traditional full-page-refresh, but it poses some difficulties as well. At its fundamentals, Ajax entails using the browser's client-side scripting capabilities in conjunction with its DOM to achieve a method of content delivery that was not entirely envisioned by the browser's designers. (Perhaps this hack-like nature of Ajax lends to its appeal.) However, this subjects Ajax-based applications to the same browser compatibility issues that have plagued Web designers ever since Microsoft created Internet Explorer. For example, Ajax engines make use of an XMLHttpRequst object to exchange data asynchronously with remote servers. In Internet Explorer 6, this object is implemented with ActiveX rather than native JavaScript, which requires that ActiveX be enabled.

A more fundamental requirement is that Ajax requires that JavaScript be enabled within the user's browser. This might be a reasonable assumption for the majority of the population, but there are certainly users who use browsers or automated tools that either do not support JavaScript or do not have it enabled. One such set of tools are the robots, spiders, and Web crawlers that aggregate information for Internet and intranet search engines. Without graceful degradation, Ajax-based mashup applications might find themselves missing out on both a minority user base as well as search engine visibility.

The use of JavaScript to asynchronously update content within the page can also create user interface issues. Because content is no longer necessarily linked to the URL in the browser's address bar, users might not experience the functionality that they normally expect when they use the browser's BACK button, or the BOOKMARK feature. And, although Ajax can reduce latency by requesting incremental content updates, poor designs can actually hinder the user experience, such as when the granularity of update is small enough that the quantity and overhead of updates saturate the available resources. Also, take care to support the user (for example, with visual feedback such as progress bars) while the interface loads or content is updated.

As with any distributed, cross-domain application, mashup developers and content providers alike will also need to address security concerns. The notion of identity can prove to be a sticky subject, as the traditional Web is primarily built for anonymous access. Single-signon is a desirable feature, but there are a multitude of competing technologies (ranging from Microsoft Passport to the Liberty Alliance), thus creating disjointed identity namespaces that you must integrate as well. Content providers are likely to employ authentication and authorization schemes (which require the notion of secure identity or securely identifiable attributes) in their APIs to enforce business models that involve paid subscriptions or sensitive data. Sensitive data is also likely to require confidentiality (that is, encryption), and you must take care when you mash it with other sources to not put it at risk. Identity will also be crucial for auditing and regulatory compliance. Additionally, with data integration happening both on the server and client-side, identity and credential delegation from the user to the mashup service might become a requirement.


Back to top

Social Challenges

In addition to the technical challenges described in the previous section, social issues have (or will) surface as mashups become more popular.

One of the biggest social issues facing mashup developers is the tradeoff between the protection of intellectual property and consumer privacy versus fair-use and the free flow of information. Unwitting content providers (targets of screen scraping), and even content providers who expose APIs to facilitate data retrieval might determine that their content is being used in a manner that they do not approve of. For a good review of Web aggregation and regulations, see Resources.

Share this...

digg
Digg this story

del.icio.us
Post to del.icio.us

Slashdot
Slashdot it!

The mashup Web application genre is still in its infancy, with hobbyist developers who produce many mashups in their spare time. These developers might not be cognizant of (or concerned with) issues such as security. Additionally, content providers are only beginning to see the value in providing APIs for machine-based content access, and many do not consider them a core business focus. This combination can yield poor software quality, as priorities such as testing and quality assurance take the backseat to proof-of-concept and innovation. The community as a whole will have to work together to assemble open standards and reusable toolkits in order to facilitate mature software development processes.

Before mashups can make the transition from cool toys to sophisticated applications, much work will have to go into distilling robust standards, protocols, models, and toolkits. For this to happen, major software development industry leaders, content providers, and entrepreneurs will have to find value in mashups, which means viable business models. API providers will need to determine whether or not to charge for their content, and if so, how (for example, by subscription or by per-use). Perhaps they will provide varying levels of quality-of-service. Some marketplace providers, such as eBay or Amazon, might find that the free use of their APIs increases product movement. Mashup developers might look for an ad-based revenue model, or perhaps build interesting mashup applications with the goal of being acquired.


Back to top

Summary

Tutorials in the "The ultimate mashup -- Web services and the semantic Web" series

Mashups are certainly an exciting new genre of Web applications. The combination of data modeling technologies stemming from the Semantic Web domain and the maturation of loosely-coupled, service-oriented, platform-agnostic communication protocols is finally providing the infrastructure needed to start developing applications that can leverage and integrate the massive amount of information that is available on the Web. As mashup applications gain higher visibility, it will be interesting to see how the genre impacts social issues such as fair-use and intellectual property as well as other application domains that integrate data across organizational boundaries, such as grid computing and business-to-business workflow management.

For a deeper-dive into mashup development, stay tuned for the launching of a new series of tutorials on developerWorks that will teach you how to construct your own mashups. In fact, the series will even teach you how to use Semantic Web technology and ontologies to enable others to create their own mashups.

Resources

Learn


Get products and technologies
Discuss

About the author

Duane Merrill has developed grid computing and distributed data integration platforms for over five years. He has been a contributor to the Legion Project at the University of Virginia and a core developer for the Avaki Corporation's distributed enterprise information integration product Avaki. He is currently obtaining his Ph.D in Computer Science at the University of Virginia.