'소프트웨어'에 해당되는 글 2건
- 2012/01/02 클라우드 컴퓨팅에 대한 서비스들 총 정리~ (1)
- 2009/05/13 소프트웨어 개발 생명주기(SDLC)에 대하여 (2)
2012년 IT 기술 트렌드에 빠지지 않고 등장하는 것이 바로 클라우드 컴퓨팅입니다.
2011/12/29 - [리뷰/블로그] - 2012년 주목할 만한 IT 기술 트렌드
클라우드 컴퓨팅이라는 것에 저 역시도 많은 혼란이 있었던 것이 사실입니다.
구글 Docs, 구글 App Engine, MS 애저(Azure), 아마존의 AWS 등 과연 어떤 것이 진정한 클라우드인지..
아직까지는 명확하지는 않지만 그래도 현재까지의 서비스들을 토대로 클라우드에 대해 전체적으로 정리해 보려고 합니다.
흔히 클라우드라고 하면 Dropbox, iCloud, 그리고 MS의 Skydrive와 같은 온라인 저장공간을 생각하게 됩니다.
그래서인지 국내의 클라우드 서비스들도 웹하드의 확장인 데이터 공유 측면에서 많이 이야기하는 것 같습니다.
그러나 클라우트 컴퓨팅에서 이런 온라인 저장공간의 개념은 오래 지속되지 않을 지도 모릅니다.
오히려 앞으로 이야기하는 개념들이 진정한 클라우드 컴퓨팅으로서 앞으로 발전하지 않을까 생각합니다.
먼저 클라우드 컴퓨팅을 이해하기 위해 주요 특성 들을 정리해 보겠습니다.
크리스토퍼 버냇이 지은 "클라우드 컴퓨팅"이란 책을 보면 다음과 같은 4가지의 주요 특성을 이야기 하고 있습니다.
- 클라우드 컴퓨팅은 동적으로 확장 가능하다.
- 클라우드 컴퓨팅은 장치 독립적이다.
- 클라우드 컴퓨팅은 업무 중심적이다.
- 클라우드 컴퓨팅은 고정 비용이 들지 않는다.
위 관점에서 클라우드 컴퓨팅을 초기에 전기를 자가 발전으로 사용하다가
한전과 같은 중앙 발전소에서 전기를 만들고 사용한 만큼 비용을 지불하는 형태로 컴퓨팅 환경이 진화될 것이라는 이야기를 하고 있습니다.
그럼.. 실제 어떤 종류의 클라우드 컴퓨팅이 있는지 한번 정리해 보도록 하겠습니다.
1. SaaS (Software as a Service) 로서의 클라우드
먼저 소프트웨어 측면에서의 클라우드 서비스입니다.
가장 활성화 되어 있는 것은 역시 Gmail로 대표되는 SaaS 이메일이 아닐까 합니다.
예전에는 MS의 아웃룩을 설치해서 확인하던 메일을 이제는 언제 어디서나 Gmail, Hotmail, hanmail 등을 활용해 사용하고 있죠..
그럼.. 이외에도 어떤 형태의 클라우드 서비스들이 있는지 살펴보죠..
1) Office 제품들
가장 많이 사용하는 SaaS용 Office 제품도 역시 구글 Docs가 아닐까 합니다.
파일의 공유와 협업을 이용한 편집 등이 장점이죠.
이외에도 조호(zoho.com), 아크로뱃닷컴(acrobat.com), MS의 Office Web Apps 등이 있다고 합니다.
2) Desktop 제품들
SaaS의 환경을 데스크탑의 OS 형태로 사용할 수 있도록 만들어진 것도 있다고 합니다.
저는 구글 크롬 OS를 생각했는데요. StartForce, EyeOS, IT Farm 등이 있다고 하네요.
3) 사진 및 동영상 편집
Flickr와 같은 사진 업로드가 아닌 사진이나 동영상을 웹에서 편집할 수 있는 SaaS 소프트웨어도 있습니다.
이미지를 처리하는 Photoshop Express, Pixlr, FotoFlexer가 있고, 동영상을 편집할 수 있는 Jaycut도 있다고 하네요.
4) 기업용 어플리케이션
기업용 어플리케이션으로는 조호(zoho), 세일즈포스(Salesforce), Employease, Clarizen 등이 있다고 합니다.
이외에도 앞에서 이야기한 온라인 저장공간의 개념도 있습니다.
2. PaaS (Platform as a Service) 로서의 클라우드
플랫폼이라는 것은 제공하는 플랫폼을 이용해서 별도의 소프트웨어를 개발할 수 있다는 겁니다.
즉, 해당 업체가 제공하는 플랫폼에서 동작하는 어플리케이션만 구동할 수 있다는 것이죠.
대표적인 예로 구글의 App Engine을 이야기 할 수 있습니다.
구글의 App Engine을 통해 개발하려면 Java나 Python 중의 하나의 언어를 사용해야 하고
오직 구글의 인프라를 통해서만 동작시킬 수 있는 것이죠.
이외에도 MS에서 제공하는 Windows Azure도 있습니다. 게임 개발에 편리하다는 이야기도 있더군요.
그리고 Salesforce.com에 적용할 수 있는 Force.com도 있다고 하네요~
마지막으로 zoho creator도 데이터베이스 관련 도구를 제공하면서 PaaS 서비스도 하고 있다고 합니다.
클라우드 내용을 정리하면서 조호란 사이트가 많이 나와서 추후 한번 확인해 보려고 합니다.
다른 서비스들은 한번씩을 들어봤고 사이트도 봤던 덴데.. 조호는 처음 들어보지만 상당히 괜찮은 클라우드 서비스를 제공하는 것 같습니다.
3. IaaS (Infra as a Service) 로서의 클라우드
인프라, 즉 하드웨어 환경을 제공하는 클라우드 서비스 입니다.
앞의 PaaS의 경우에는 해당 플랫폼에 맞추어서 개발해야 하지만 IaaS 서비스는 플랫폼에 상관없이 하드웨어를 제공하는 형태입니다.
기존의 서버 호스팅을 대신하는 개념으로 이해할 수 있을 것 같습니다.
그래서 IaaS 제공 업체들은 서버와 함께 다른 물리적인 하드웨어 및 관련된 관리와 지원을 서버 가상화 기술을 기반으로 제공하고 있습니다.
대표적인 업체로는 역시 아마존의 AWS가 아닐까 합니다.
EC2와 S3를 통해 서버와 스토리지를 모두 제공하고 있지요.
(올해에는 저희도 Global 서비스를 위해 사용하려고 12월에 Instance를 생성했네요.)
AWS와 유사한 서비스를 제공하는 Rackspace, GoGrid 등이 있다고 합니다.
이상으로 세 가지 측면에서 클라우드 서비스를 정리하면서 보니
국내에서도 클라우드 서비스를 온라인 저장공간의 개념으로 구축하는 측면에서 벗어나 다각도의 서비스로 만드는 것이 필요하다고 보입니다.
아직 클라우드 컴퓨팅이라는 개념은 명확하게 정의되지 않은 것이 사실입니다.
위에 설명한 서비스들이 있지만 이것도 보는 관점에 따라서는 클라우드가 아니라고 이야기 할 수도 있을 겁니다.
결국 중앙에서 안전하게 제어되고 인터넷을 통해 사용자들에게 서비스를 제공하며,
그들이 컴퓨터, 노트북, 스마트폰, 태블릿을 통해 언제 어디서나 접속할 수 있는 것이라면 바로 위 목록에 올라갈 수 있는 서비스가 되지 않을까 생각합니다.
2012년의 IT Hot Issue라고 하는 클라우드에 제대로 접근하기 위해서는 먼저 클라우드가 어떤 것인지를 이해하는 것이 필요할 것 같아서
새해 첫 포스트로 한번 정리해 봅니다.
그럼.. 새해 복 많이 받으세요~
'리뷰 > 블로그' 카테고리의 다른 글
| Apple iAD 모바일 광고 서비스 동향 (0) | 2012/01/05 |
|---|---|
| 모바일 어플리케이션 분석 툴이면서 (실제로는 광고 플랫폼인) Flurry (0) | 2012/01/04 |
| 클라우드 컴퓨팅에 대한 서비스들 총 정리~ (1) | 2012/01/02 |
| 2012년 주목할 만한 IT 기술 트렌드 (0) | 2011/12/29 |
| GS 인증 절차 ~ (TTA 소프트웨어 인증) (0) | 2011/12/28 |
| 메리 크리스마스~ 재미있는 YouTube 동영상들~ (0) | 2011/12/25 |
Trackback 0 And
Comment 1
저도 처음에는 프로그래밍 언어만 할 줄 알면 프로그램을 만들 수 있다고 생각했던 적이 있었습니다.
실제로 그렇게 만들었던 프로그램도 꽤 많지요. ^^
하지만, 지금 생각해 보면 그렇게 만들었던 프로그램은 세상에 빛을 보지 못했거나 그리 오래 가지 못했던 것 같습니다.
반면에 체계적인 분석과 설계로 만들었던 몇몇 솔루션은 아직도 현업에서 잘 사용하고 있는 것을 볼 수 있었습니다.
바로 체계적인 분석과 설계라고 하는 것이 소프트웨어 개발 생명주기(Software Development Life Cycle)의 핵심이 아닌가 합니다.
여기에 추후 운영에 필요한 유지보수도 무시할 수는 없겠죠..
흔히 SDLC라고 하면 Waterfall, Prototyping, Spiral, RAD, Incremental Development, Evolutionary Development, 4 Generation 등의 모델을 들면서 어렵게 이야기 하는 경우가 많습니다.
물론 어떤 모형을 사용하는지 중요하지만, SDLC가 왜 필요한지 생각하지 않고 사용하는 것은 무의미하다고 봅니다.
단순하게 이런 모델로 개발을 진행한다고 하면서 코팅부터 하고, 프로젝트 개발이후 문서작업을 따로 하는 경우를 종종 봐왔기 때문입니다.
특정 모델들을 떠나서 가장 기본적인 또는 고전적인 SDLC의 형태는 다음과 같습니다.
프로젝트를 수행하려면 먼저 계획을 세워야 합니다. 투입될 인력이나 기간을 토대로 비용도 산정해 봐야하고 비즈니스 타당성도 검토해 봐야겠죠.. 물론 분석이나 설계 없이 이 작업을 정확하게 할 수는 없을 겁니다.
그러나 기존의 경험을 토대로 개괄적인 계획은 세워야만 프로젝트를 시작할 수 있을 겁니다.
추후 분석과 설계를 토대로 계획을 수정할 수도 있을 겁니다.
다음으로 분석과 설계입니다. 먼저 둘의 차이점에 대해서 알아보죠..
분석은 무엇(what)에 관심을 갖는 것이고 설계는 어떻게(how)에 관심을 갖는 겁니다.
만들어야 할 프로그램은 하나지만, 그것을 만드는 방법은 여러가지가 있을 수 있습니다.
즉, 분석은 만들려고 하는 프로그램을 하나로 명확하게 정의하는 과정이라고 할 수 있습니다.
설계는 프로그램을 만드는 방법을 찾아보는 것이라 할 수 있겠죠..
이것을 반대로 수행한다면 어떨까요? 어떻게 만들까를 먼저 생각하고 무엇을 만들지를 결정한다..
말이 안되는 것처럼 보이지만 의외로 현업에서 자주 발생하는 듯 합니다.
특히, 개발자의 관점에서 브레인스토밍 회의시 무엇을 만들지를 이야기 하고 있는데, 어떻게 구현할지를 걱정해서 "이건 안된다, 저건 안된다" 하는 경우를 종종 볼 수 있었습니다.
앞에서도 이야기 했듯이 분석에서 만들려고 하는 프로그램을 명확하게 정의해야 합니다.
그것을 어떻게 구현할 지는 설계 단계에서 결정하면 되는 것이죠..
"개발하지 못할 것이 어디 있겠는가?"하는 마인드가 분석 단계에서 중요하다고 볼 수 있겠죠..
설계 단계에서는 가장 효율적이고, 사용자가 편리하고, 개발을 빠르게 할 수 있는 방법을 찾아서 정리하고 모듈별로 나누는 작업까지 해야 겠죠..
코딩및 구현은 프로그램 개발에 있어 기본적인 사항이라 할 수 있습니다.
테스트의 중요성이 요즘 커져서 Test Driven Development라고 하는 방법도 나오고 있고, JUnit과 같은 단위 테스트 도구도 많이 발달한 상태입니다.
통합 테스트에 대해서는 좀 더 고려가 필요하겠죠...
마지막으로 유지보수입니다. 실제 보면, 개발 기간보다 시스템을 운영하는 기간이 더 길기 때문에 유지보수의 중요성이 점차 커지고 있습니다. 천만원에 개발했는데, 유지보수에 억단위가 들어간다면 좋은 시스템은 아니겠지요..
기본적인 SDLC의 단계를 나열해보니, 그리 어렵지 않다는 생각이 들겁니다.
물론 실제 적용하다 보면, 구현 단계에서 특정 부분을 변경할 경우 해당하는 분석/설계 산출물까지 변경해야 하는 번거로움이 존재할 수 있습니다.
이런 문제들은 반복이나 자동화 툴을 이용하는 다양한 SDLC의 모델들을 통해서 해결해 나갈 수 있을 것입니다.
중요한 것은 소프트웨어 개발 생명주기가 단순히 문서 작업을 늘리고, 이론적일 뿐인 방법론이 아니라 제대로 된 소프트웨어를 개발하기 위한 필수 사항이라는 것을 이해해야 한다고 봅니다.
[읽을만한 자료]
소프트웨어 개발 생명 주기의 이해
코딩보다 먼저 할 일 ‘분석과 설계’
설계도가 우선, 그 다음이 구현이다
'컴퓨터공학 > 소프트웨어공학' 카테고리의 다른 글
| 소프트웨어공학의 3R(Reverse-Engineering, Re-Engineering, Re-Use)에 대하여 (0) | 2011/10/01 |
|---|---|
| Agile 이야기 (0) | 2010/06/28 |
| ITSM(IT Service Managment)에 대하여 (0) | 2010/06/25 |
| 소프트웨어 개발 생명주기(SDLC)에 대하여 (2) | 2009/05/13 |
Trackback 0 And
Comment 2


