블로그 이미지
레인레테
연락처 : rainlethe@rainlethe.com 영혼을 잃어버리다.

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      

'프레임워크'에 해당되는 글 2

  1. 2012/01/09 개발 프레임워크에 대한 아주 쉬운 이야기.(1)
  2. 2011/02/24 삼성의 바다 OS 전략은 뭐지?(4)
2012/01/09 12:34 RL.P rogramming
1. 맨땅에 개발하던 시대.
아주아주아주아주 먼 옛날. 
소형 컴퓨터라는 것이 방 하나를 꽉 채울 만큼 큼직했던 시절.
디버깅이라는 것이 실제로 진공관 사이에 끼어 죽어있는 벌레를 처리하는 것이었던 때에 모든 개발자들은 컴퓨터 작동에 필요한 모든 논리를 처음부터 만들어내야 했어요. 

자동차를 만들 때마다 고무를 녹여 타이어를 만들고, 철을 녹여서 엔진을 만드는 격이었죠.


2. 라이브러리가 등장하다.
그러다가 누군가가 이런 생각을 했어요. 
그럼 미리 고무를 잔뜩 녹여서 타이어를 만들어놓으면, 자동차를 조립하기 편하겠네?
그래서 많은 개발자들은 일일이 고무를 녹이는 대신 타이어를 파는 가게에서 바퀴를 사다가 끼기만 하면 되었어요. 
자동차를 만드는 시간은  획기적으로 단축되었고, 모든 개발자들은 이것이 마법이라고 생각했어요. 

이런 타이어 같은 것을 '라이브러리' 라고 해요. 미리 만들어진 부품을 가져다가 쓰는거죠.


3. 프레임워크의 시대가 도래하다.
이렇게 타이어를 팔던 가게가 번성하던 어느 날, 새로운 자동차가 필요해진 A씨는  이런 생각을 했어요. 
'내가 왜 자동차를 만드는데 이 모든 부품을 다 알아야 하는 걸까? 그냥 조립이 다 되어 있으면 안되는걸까?'
그래서 A씨는 엔진, 타이어, 핸들 등이 다 붙어있는 자동차를 만들어 팔기로 했어요. 
이 자동차를 구매하는 사람들은 '색깔' 이나 '선루프'  등의 옵션만 선택하면 되게 된 거죠. 

이렇게 '자동차'를 만들기 위한 '꼭 필요한 부품들이 미리 조립되어 있는 것' 을 프레임워크라고 합니다.

이런 식으로 컴퓨터 프로그래밍은 발전되어 왔답니다.

더이상 사람들은 자동차에 대해서 정확히 어떤 구조로 굴러가는지 알 필요 없이 엑셀레이터를 밟으면 굴러가고 브레이크를 밟으면 멈추며, 핸들을 돌리면 방향이 바뀐다는 것만 알면 되는거죠.

참 아름다운 세상이에요.


4. 문제가 생겼을 때는 어떻게 하지?
끝!
.. 이라고 하면 참 아릅답고 행복했을 때지만, 현실은 그렇지 않아요. 
여느날처럼 자동차로 출근을 하던 B씨는 갑자기 달리던 자동차가 덜컥 멈추는 황당한 사태를 맞이하게 되었어요.
자동차에 대한 지식이라고는 운전하는 법과 라디오 켜는 법밖에 모르던 B씨에게 이건 낭패였죠.

그래서 B씨는 '인터넷'이라는 이름의 친구에게 다급하게 전화를 합니다. 
'인터넷'은 자기가 알고 있는 지식을 총 동원해서 B씨를 도와주려고 하지만
B씨는 도대체 왜 자동차가 멈추었는지 알 길이 없었기 때문에 설명하기가 너무 어려웠어요.

결국 B씨는 '인터넷'에게  '고렙 개발자' 라고 하는 이름의 자동차 수리가게를 소개받았죠.


5.  결국 구조를 다 알아야 하네?! 
'자동차 수리가게' 에서는 B씨에게 '엔진오일도 없고 미션 상태도 좋지 않네요.' 라고 말을 해 줬어요.
그렇지만 B씨는 자동차 안에 왜 엔진오일이 필요한 건지, 미션이라는건 도대체 무엇인지 알 수가 없었어요.
그냥 '고쳐주세요' 라고 말하는 수밖에 없었죠.

그리고 생각했어요. 
'아. 정상적인 상태일때는 미리 조립되어 있는 것이 참 편리하지만, 문제가 생기면 결국 기본 구조를 다 알아야 하는구나.'


6. 제조사에서는 어떻게?
이런 상황을 자동차 제조 회사에서도 모를리가 없죠. 
그래서 자동차 회사에서는 '최신 자동차 조립기술'에 맞는 '최신 전자제어장치'를 집어넣기로 했어요.
엔진오일이 없으면 계기판에서 경고등이 나오는 장치에요. 
이제 더이상 B씨는 엔진오일이 없어서 자동차가 달리다가 멈추는 일은 없을 꺼에요! 

.. 물론 여전히 미션의 상태는 확인할 수 없겠지만요. 

또 시대가 바뀌면서 자동차가 그냥 운송수단에서 레져로 바뀐다는것을 자동차 회사는 간파했어요.
그래서 자동차의 시트를 푹신하게 바꾸고, 크루즈 기능을 넣어서 자동 운전이 가능하게 만들었죠. 
즉, 이 회사는 '자동차'라는 프레임워크와 그걸 만드는 기본 재료인 '시트'를 통채로 다 맞춰서 바꾸는 거에요. 

이런걸 제일 잘하는 회사 이름은 마이크로소프트에요.

웹 여행을 할 때 쓰는 자동차 "ASP.NET" 을 시대에 맞춰서 "ASP.NET MVC 나 ASP.NET AJAX" 로 변신시키고, 
데스크탑에 코어가 여러개 달린 컴퓨터 시대가 도래하자 "패러럴" 기능을 아얘 언어에 통합시켜 버렸답니다. 

덕분에 운전자들은 '크루즈' 기능을 어떻게 쓰는건지 배워야 했지만
대신 일정한 속도로 달릴 특정 상황에는 엑셀레이터를 안밟아도 되는 편안함을 얻게 된 거에요. 


7. 튜닝 한번 해볼까?

멋쟁이 C씨는 자신의 자동차가 다른 자동차들과 똑같아 보이는게 싫었어요. 
그래서 자동차 문이 옆으로 열리는 대신 위로 열리게 개조를 한 거에요.

그런데 자동차 문을 바꿔놓고 보니 멋지기는 한데, 자동차가 달릴때 자꾸 바람소리가 들려와요.
알고보니 자동차회사가 이 자동차를 설계할 때 초정밀 계산기로 계산해 둔 자동차가 달릴때  외부 바람에 대한 마찰역학계수를 C씨는 몰랐기 때문이었어요. 

결국 C씨는 위로 열리는 문을 뜯어내고 다시 옆으로 열리게 개조하는 수밖에 없었습니다. 

이렇게 프레임워크는 '구조상 하위호환성을 유지하면서 업그레이드하는 것'은 멋쟁이 C씨가 할 수 있는 일이 아니었네요. 자동차 회사만 가능하군요. 


8. 낡았어. 바꿔야겠어. 
오랫동안 차를 잘 타고 다니던 'D' 씨는 이 차가 시대의 흐름에 맞지 않는다고 느꼈어요. 
주위 친구들은 다들 최신 기종인 'Ruby on rails" 를 타고 다니는데 자신만 'Structs' 를 타고 다니는건 촌스러워 보였거든요. 
그래서 이 차가 자신에게 맞나 한번 타보기로 했어요.
아니 그런데 이게 뭐에요.
핸들은 오른쪽에 있는 데다가 기어가 핸들 옆에 붙어있고, 심지어는 크루즈 모드도 없어요. 게다가 더욱 더 이해할 수 없게  여기는 뭐에 쓰는지 모를 '에어 브레이크'라는 기능도 있다는 거에요. 
D씨는 도대체 이걸 어떻게 운전하는지조차 알 수 없어서 친구들에게 물어봤지만, 친구들은 '우왕 이게 킹왕짱 익숙해지면 완전 편해' 라고만 할 뿐이었어요.
물론 몇몇 친구들은 적극적으로 나서서 'Ruby on Rails' 에 익숙해지는데 도움을 줬지만, 이미 'Structs'에 익숙해신 D씨는 도저히 이해할 수가 없는 것들 투성이었죠.
결국 D씨는  '옛것이 좋은 것이여' 라는 말을 남긴 채   'RoR'을 사용하는 것을 포기했답니다.

이렇게 프레임워크는 한번 익숙해지면, 다른걸로 갈아타기가 너무 힘든 경우가 많아요. 각 프레임워크는 각 프레임워크를 관통하는 철학이 있거든요. 




조금은 프레임워크에 대해서 이해가 가시나요? 


2012.01.09. By RL.P
저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
2011/02/24 09:00 RL.M arketing















먼저 바다 OS가 뭔지부터 정의를 좀 해야할듯하다.


여기저기 찾아봐도 코어 OS 레이어인지 어플리케이션 프레임워크 레이어인지 단순히 UI레이어인지 알수가 없어서 바다 공식 홈페이지를 찾아봤다.

영어로 되어있다 -_-;
어쩔수 없이 발번역을 하기로 했다.
원문 :
Samsung bada is a smartphone platform released in 2010. The word “bada” means
“ocean” in Korean. Samsung Wave is the first bada-powered phone.
For developers, bada will bring a new blue ocean of mobile applications. For
customers, they will have a wider choice of smartphones with cost-effective yet
powerful bada-powered phones.

Vision of bada
The vision of bada is “Smartphone for Everyone”. bada’s main goal is not to
compete with other existing smartphone platforms. Instead, bada will turn Samsung’
s conventional customers into smartphone users by providing cost-effective
smartphones. This means that bada will open and extend a new smartphone market,
which does not exist in the current mobile market.


번역 :
삼성 바다는 2010년에 릴리즈된 스마트폰 플래폼이다. 바다는 한국어로 Ocean(정확히 번역하면 '대양'이겠지만;;) 을 의미한다.삼성 웨이브는 첫번째 바다 폰이다.
개발자들에게는 모바일 어플리케이션들에게 새로운 기회를 줄 것이다. 사용자은 가성비가 좋은 바다 플래폼이 탑재되어 있는 스마트폰 선택을 할 수 있다. (문맥이 정확하지가 않네요..)

바다의 비전.
바다의 비전은 "모두를 위한 스마트폰" 이다. 바다의 최종 목적은 이미 출시된 다른 스마트폰 플래폼이 아니다. 대신 바다는 삼성의 오랜 고객들이 가격대비 성능이 좋은 스마트폰을 사용할 수 있게 해 줄 것이다. 이것은 바다가 이전까지는 없었던 새로운 스마트폰 마켓을 열것이라는 의미다.



나머지는 뭐 바다의 역사, 바다 비지니스, 바다의 사양.. 등에 대한 언급이므로 일부러 번역 안했다. (결코 귀찮아서 그런건 아니다.)


그런데 이것만 봐서는 여전히 뭔지 알 수가 없다.



다른사람들은 알까?
그래서 나보다 먼저 분석해 둔 분들이 있을꺼라 생각하고 웹서핑을 시작한다.


※ 삼성전자, 독자 스마트폰 OS '바다' 공개에 보면 바다는 그냥 완전히 Low Level OS라고 설명되어 있다. 즉 기존에 피쳐폰에 들어가던 RTOS를 업그레이드한 버전이라는 것이다.

※ 바다 OS가 Nucleus RTOS 기반인가요? 라는 다음 지식에서도 같은 답변이 나온다. 여기서는 멘토그래픽사에서 상용 RTOS 로 출시한  Nucleus 를 기반으로 설계되었고, 여기에  touch with frame work라는 UI를 입혀서 나온것이 바다라는 것이다.

※이건 그저 UI 레이어라고 말씀하시는 분도 계셨다.
삼성의 Bada 플랫폼 vs 노키아의 QT 플랫폼 - 삼성의 바다 플랫폼에 대한 이해 #bbuser #bada

※안드로이드 펍의 삼성 바다 웨이브 S8500 사진, 스펙 및 동영상  이라는 글의 댓글에 보면 머리에 꽃을 님이 작성하신 질문이 나오는데.. 은근히 묻혀버렸다(..)
그리고 그 아래에 시나브로님께서는 모바일 기기용 통합 UI플랫폼 이라고 말씀해 주셨다. 즉 커널이 무엇이든 관계없이 UI측면을 동일하게 가져갈 수 있다고 친절하게 부연설명까지 붙여 주셨다.
역시 하단에 madhatter님께서는 조금 다른 의견을 말씀해 주셨는데, 여기에 좀 주목해야 할 점이 있다.
바다 플랫폼 - 실제로는 framework으로 보입니다 - 을 살펴 보니 OS, Device, Service, Framework으로 layer가 나뉘어 있고 OS 는 linux나 RTOS를 주로 사용할 것이라고 합니다. 제가 보기엔 일단 WM은 제외를 하지 않을까 합니다. 가능은 하겠지만요.

Framework은 C++ 기반이고, Device나 Service단을 범용적으로 wrapping 하는 구조라고 보입니다만.. 삼성이 저쪽에 얼마나 리소스를 할당할 수 있을지 궁금합니다. 하드웨어별로 매우 많은 버전의 Framework이 필요하지 않을까 하는 생각이 들거든요.

일단 강조해두고 아래에서 다시 분석해보자.


어떤 레이어인지가 그렇게 중요한가?

코어 레이어든, 디바이스 레이어든, VM 레이어든, UI 레이어든 사실 사용자 입장에서는 별 관계가 없다. 다만 이걸 개발하고 판매하는 사람 입장에서는 이 바다에 뛰어들만한 가치가 있느냐를 판단해야 하는 거라서 , 큰 관계가 있다.

이게 코어/디바이스 레이어라는 것은 , 하나의 핸드폰에 바다 OS만 올라갈 수 있다는 의미다. 즉, 아이폰에 Iphone OS만 올라가고, 갤럭시S에는 안드로이드만 올라가는거랑 똑같다는 거다. 바꾸어 말하면, 아이폰 어플을 갤럭시에서 못쓰듯이 그 OS에 맞는 어플만 쓸 수 있다는 의미다.

그게 아니라 UI 레이어라면, 바다 OS는 사실상 OS가 아니라는 뜻이 된다. 예를 들면 햅틱에도 햅틱 UI가 들어가고, 옴니아에도 햅틱 UI가 들어간다. 그렇다고 해서 햅틱하고 옴니아가 같은 OS를 쓰는것은 아니지 않는가? 어디까지나 햅틱은 피쳐폰이고, 옴니아는 (WM을 탑재한) 스마트폰이니 말이다.

만약에 이것이 미들 프레임워크 레이어라면 이야기는 전혀 달라진다. 그러니까.. 만약에 바다 OS가 자체적인 RTOS 기반으로도 작동되고, 안드로이드 위에서도 작동되고, 아이폰 위에서도 작동되고(이건 애플이 허락을 해줘야 해서 해줄지 모르겠다) 한다면 어떻게 되는걸까?
사용자는 안드로이드 어플과 바다 어플을 동시에 사용할 수 있게 된다.
이런식으로 가상머신위에서 실행되는 것은 의외로 데스크탑쪽에는 많다. Virtual Machine이라고 하니까 Virtual PC나 VM웨어를 사용해서 완전히 다른 OS를 띄운다고 상상하기 쉬운데, 실은 그냥 프로그램을 실행시키기 위한 레이어가 하나 더 있는거다. 대표적인 것이 .net Framework와 JavaVM이다. 이것들은 이 프로그램 자체로 순수한 가상머신을 구현하고, 그 가상머신이 진짜 가상머신과 통신하는 구조다.


바다도 VM 구조를 염두해 둔 설계라면?

먼저 본인이 그림판 신공을 통해  성심성의껏 그린 아래 그림을 한번 보자.


만약에  갤럭시의 새 버전인 안드로메다(...) 에 위와같은 구조가 올라간다고 생각해보자.
기반은 안드로이드로 만들고, 그 위에 바다 OS가 올라간다. 그럼 안드로메다는 안드로이드 기반 어플인 카카오톡 같은것도 잘 되고, 바다 특유의 어플리케이션인 '저행성 끝까지(가칭)' 도 잘 실행된다. 게다가 굳이 뻣뻣한 안드로이드 OS를 튜닝할 필요 없이, 바다 위에 UI 레이어를 올려버리면 훨씬 포팅도 간단해진다. 그리고 바다 OS는 VM 기반이기 때문에 (정확히 말하면 그냥 안드로이드 어플리케이션 중 하나기 때문에) 안드로이드가 아닌 그냥 '웨이브' 폰 위에 바다 OS를 올려도 바다 특유의 어플인 '저행성 끝까지'는 잘 실행된다는 얘기다.

이 이야기는 개발자나 마케터들에게도 꽤나 중요한 이야기인데, 바다 OS까지 올라간 폰이라면 선택의 폭은 두배가 된다. 사용자에게 어필할 포인트가 많아진다는 면에서는 마케터에게 유리하고, 한번 만들어놓으면 어떤 스마트폰이든 바다가 채택된 폰의 경우 무조건 실행된다는 점을 보장한다는 면에서는 개발자들에게 유리하다.


그럼 삼성은 이걸 왜 만들려고 하는걸까?


바다 공식 홈페이지의 EcoSystem 항목을 보면 이런 그림이 있다.



그림은 뭔가 오묘해 보이지만, [RL.M arketing] - 윈도7폰. 진짜 망할까? 에서 말했던 선순환 구조를 나타낸 것에 불과하다. 다시한번 기술하자면 폰이 팔린다 -> 어플을 만든다 -> 어플 쓸라고 또 폰이 팔린다. .. 라는 것이다.

즉, 여태까지 삼성은 전화기 판매 수익으로만 돈을 벌었다. 어플리케이션이 많이 사용되면 전화기가 많이 팔리니 그건 좋겠다만, 그 외에 추가적인 수입은 없었단 얘기다. 그런데 가만히 보니 이거.. 꽤나 돈이 될 것 같다. 그래서 어플리케이션 시장을 우리도 한번 시작해보자..라는게 이 바다 OS다.


이게 사용자들에게 어필하려고 삼성은 어떤 전략을 짜왔을까?


삼성 '바다'를 처음 채용한 폰. 'Wave(S8500) MWC에서 첫 공개! 삼성의 저의는? 이라는 글 하단에 보면 삼성은 '피쳐폰같은 스마트폰'을 만들고자 했다는 단락이 나온다. 또한 이러한 시선은 삼성 피쳐폰에 바다OS 탑재계획은 탁월한 선택! 이라는 껍데기님의 글에서도 같이 느껴진다.

그렇다. 삼성이 하면 쉽다. 왜냐하면 삼성은 세계에서 굴지의 핸드폰 업체기 때문이다.
아무리 삼성이라고 해도 완전히 새로운 시장을 파고 들어가는건 어렵다. 아직은 포화상태가 아니어서 시장의 틈바구니를 만들어야 하는 스마트폰 시장에서 이미 아이폰과 안드로이드는 절대 강자로 싸우고 있다. 여기를 억지로 비집고 들어가는건 쉬운일이 아니지만, 삼성 브랜드를 달고 나오는 모든 폰에 바다 OS가 기본으로 깔린다면 이야기는 달라진다. 피쳐폰이건 뭐건간에 모든 핸드폰은 OS가 설치되어 있기 때문이다.

혹시 LG에서 나왔던 맥스라는 폰 기억하는가? 그냥 피쳐폰이었는데도 불구하고, 어플리케이션을 설치할 수 있었다. 그런데 어플리케이션 SDK가 공개되어 있지 않아서 모든 어플을 한 업체가 다 만드는 바람에 숫자와 호환성의 한계에 부딛혀 말아먹었다(...)
다행히 바다폰은 이럴일은 없다. SDK도 열려있고 (개발하기 쉽든 어렵든 간에) 뭔가 외부업체에서 개발을 할 수는 있는 것이다. 문턱이 높다낮다와는 다른 문제겠지만..

바다가 주의해야 할 점.

바다폰 혹은 바다 OS는 어떻게 보면 iPhone보다 더 쉬운 피쳐폰 같은 스마트폰을 지향한다. (피쳐폰에 어플 깔 수 있으면 그게 스마트폰이지 뭔가..) 고로 피쳐폰만큼 저렴해야 하며, 그렇다고 어플의 질이 떨어져서도 안된다.
삼성이 교훈삼아야 할 부분이 하나 있다. 바로 노키아다. 노키아는 아이폰이 나오기 한참 전부터 심비안 플래폼을 만들어왔고, 바다와 똑같은 전략을 펼쳤다. 말이 심비안 플래폼이지, 심비안은 그 버전이 엄청나게 많다. 노키아는 하이엔드 핸드폰부터 초저가형까지 모두 심비안을 집어넣어서 팔았었다.  그런데 지금, 왜 노키아는 망해가고 있는가?

이 답을 찾지 못하면, 바다도 망한다.


2011.02.24. By RL.M

덧.
다행히도 유럽에는 잘팔리고 있다고 한다.

덧2.
옥션에 봤는데 웨이브폰을 4.5만원짜리 지정요금제를 다음달 말까지 유지하는 조건으로 그냥 주고 있다. 이정도면 꽤나 경쟁력 있는 가격으로 나온듯.




저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테
prev 1 next