2015년 8월 20일 목요일

자동화된 클라우드 컴퓨팅 서비스 기획 시 고려해야할 8가지 주요이슈

클라우드 컴퓨팅은 편리성과 비용절감 효과 때문에 최근 몇 년간 기업들의 컴퓨팅 리소스 활용의 주요 화두임. 클라우드 리소스의 효율적인 활용을 위해 자동화 요구가 높아지고 있음. 효과적인 클라우드 자동화를 위한 주요 요건은 
△ 다이나믹 스케일링 자동화, 
△ 동일한 수준의 보안레벨 확보, 
△ 다양한 플랫폼과 외부 클라우드에 대한 서비스 지원,
△ 사용 편의성 등이 있음

클라우드 서비스의 구성 , 실행 및 지속적인 관리에 대한 자동화에 있어 과제는 다음과 같습니다.

1. 다이나믹 스케일링 (Dynamic Scaling) 
- 대부분의 기업들이 빠르게 오프라인 판매 모델에서 온라인 판매로 이동하고 있음에 따라 , 시즌 세일 때는 추가로 웹과 데이터베이스 서버가 필요함 . 트래픽 증가가 일어날 때 빠르고 자동적으로 이를 대응할 수 있는 것이 다이나믹 스케일링의 하나임
- 하이브리드 클라우드는 거의 일반적인 수요 시에 자체 서버를 이용하고 추가적인 컴퓨팅 파워가 필요할 때 퍼블릭 클라우드 서버를 이용하게 구성되어 있음

2. 환경 재구축 (Rebuilds of environments) 
- 만약 대학에서 학생들에게 다양한 강좌를 제공하기 위한 SW 애플리케이션 등을 포함한 컴퓨팅 자원을 제공하기 위해서는 각 학생별로 적합한 교육환경을 재구축해야 할 필요가 있음
- 클라우드 매니지먼트 툴은 마스터 템플릿을 기반으로 쉽고 빠르게 버추얼 컴퓨팅 환경의 실행 및 재구축을 지원함

3. 지속적인 모니터링 및 가용성 관리 (Ongoing monitoring and availability management) 
- 서버의 지속적인 모니터링 및 관리는 자동적으로 작동하지 않는 서버 및 서비스를 제거하고 이를 새로운 자원으로 확보하여 운영할 수 있도록 하는 것이 중요함

4. 보안 (Security)
- 프라이빗 클라우드의 보안 레벨을 퍼블릭 및 하이브리드 클라우드까지 확장시켜야함 . 클라우드 인프라 자동화 관리 툴은 퍼블릭 , 프라이빗 클라우드 서비스 모두에서 위반사항이나 의심스러운 활동을 모니터링하고 이를 보고하는 기능이 있어야 함

5. 다중역할 (Multi-tenancy)
- Multi-tenancy 는 클라우드 인프라 자동화 툴에서 지원해야 하는 사항임 . IT 조직은 많은 외부 기관 또는 동일한 조직 내의 여러 내부 부서에 컴퓨팅 서비스를 제공하는 경우 다양한 사용자를 만족시키는 서비스를 제공하기 위한 다중역할 (Multi-tenancy) 기능이 필요함

6. 단순화 (Simplicity) 
- 클라우드 인프라 자동화 툴은 다양한 종류의 서버와 데이터베이스 관리 툴 , 애플리케이션 소프트웨어 등에서 구동하기 위해서는 구성 및 이용이 단순해야 함

7. 언어 지원 (Language support)
- 많은 클라우드 기반 서비스들은 자바 , MS 의 C++, C# technologies, PERL, Python 과 다양한 언어를 지원해야 함

8. 모바일 백엔드의 신속한 개발 (Rapid development of mobile back ends) 
- 모바일 애플리케이션 , 특히 기업용 애플리케이션은 결국 빠르게 구성되고 실행되는 모바일 백엔드 서버가 필요함 . 클라우드 인프라 자동화 툴은 점점 더 새로운 요구 사항 (Requirement) 들을 지원할 수 있어야 함

클라우드 컴퓨팅을 위한 Java 애플리케이션 데이터 보안

클라우드 컴퓨팅 플랫폼과 서비스는 단 몇 년 만에 Java™ 애플리케이션 개발 환경에 지각변동을 일으켰습니다 . 시스템 유지보수 및 구성과 연관된 장벽을 낮추었고 , 소프트웨어 출시 비용을 절감하는 동시에 시간을 단축하는 뛰어난 성과를 거두었기 때문입니다 . 개념적으로 , 클라우드 컴퓨팅이 충분히 합리적인 건 맞습니다 . 비즈니스 관리자는 ROI 달성을 원하고 , 개발자는 인프라 코드로부터의 자유를 얻기 때문입니다 . 그러나 수많은 개발사에서는 여전히 클라우드 플랫폼으로 이전할지 여부를 두고 고심에 고심을 거듭하고 있습니다 .

데이터 보안은 소프트웨어를 클라우드 인프라로 마이그레이션하는 방안을 고려 중인 조직에게는 주요 관심사 중 하나입니다 . 중요한 데이터일수록 보안을 염려할 이유가 더욱 뚜렷한 법입니다 . 우리는 소프트웨어 개발자로서 , 클라우드 컴퓨팅의 실제 보안 위험과 최소한 이런 문제 중 몇 가지라도 해결하기 위한 현실적 접근법을 모두 이해하는 것이 중요합니다 .

Java development 2.0 시리즈의 이번 회에서는 클라우드에 데이터를 저장하는 것이 중앙 컴퓨터에 저장하는 것과 어떤 점에서 다른지 설명하겠습니다 . 그런 다음 , Java 플랫폼의 기본 제공 개인 키 암호화 표준 및 유틸리티를 사용하여 데이터가 분산형 클라우드 데이터 저장소에 저장되어 있더라도 데이터를 합리적인 수준에서 안전하게 보호하는 방법을 설명하겠습니다 . 마지막으로 , 데이터 암호화 여부에 대한 기준선으로서 쿼리의 조건을 사용하는 전략적 암호화 접근법을 예시와 함께 보여주겠습니다 .

IoT로 살펴보는 소프트웨어 개발 트렌드의 변화

최근에 많은 관심을 받고 있는 IoT(Internet of Things)는 다양한 형태로 해석하고 적용하는 경우가 많지만, IoT의 핵심 내용은 네트워크에 접속한 사물이 스스로 데이터를 수집하고 전달한다는 것입니다. 
이러한 이유로 IoT는 원하는 정보를 언제 어디서나 간편하게 주고받는 환경을 제공합니다. 물론 어떤 종류의 데이터를 어떻게 전달할지는 설계자가 설계를 하게 됩니다. IMS리서치에 따르면 기업들이 사용하는 사물의 약 85% 정도가 네트워크에 연결되지 않은 상태라고 합니다. 아직도 이렇게 많은 사물들을 IoT의 세계로 끌어들이기 위해서는 다양한 사물들을 연결하고 분석한 후 원하는 데이터를 수집할 수 있는 체계적인 기술이 필요합니다. 이러한 기술들 중에 이번 회에서는 IoT 시장에서 추가적으로 필요로 하는 소프트웨어 기술에는 어떠한 것이 있는지 살펴보기로 합니다.

IoT Architecture
<그림1>의 좌측 그림과 같이 IoT의 시초는 각 산업 또는 서비스에서 일부 필요한 데이터만을 수집하여 전달하는 형태였습니다. 따라서 수집 되는 데이터도 매우 적은 양이었고 사용되는 소프트웨어도 단순한 형태가 많았습니다.

<그림1> IoT 모델의 변화














2015년 8월 19일 수요일

동영상 스트리밍 기술 동향(Video Streaming Technology Trends)

2014년 3분기까지 재생된 온라인 동영상 1,770억건을 분석한 결과, 온라인 동영상 소비의 29%는 모바일 기기에서 이뤄진 것으로 나타났습니다. 거의 3분의 1수준입니다. 스마트폰에서는 동영상 재생이 전년 대비 56% 증가했고, 태블릿에서는 27% 증가했습니다(자료: '디지털 비디오 벤치마크' 보고서, 어도비, 2015-01).

 모바일에서 동영상 소비는 광고와 직결됩니다. 미국 인터넷광고협회(IAB)가 지난달 23일 발표한 보고서에 따르면 미국의 지난해 모바일광고 매출은 전년보다 76% 성장한 125억달러(약 13조원)로 집계됐습니다. 


페이스북의 2014년 4분기 광고수익은 약 33억달러였고 이 중 모바일에서 수익은 73%에 달했습니다. 뉴스피드에 올라오는 동영상은 월 평균 1억개를 넘고 있으며 한국에서는 매월 1,000만명 이상이 모바일 페이스북에서 동영상을 시청하고 있습니다.

페이스북은 이미 2014 년 6 월 , 모바일 동영상 시청률을 높이기 위해 
동영상 게시물이 우선순위를 갖도록 뉴스피드 알고리즘을 수정했다 .

 한편, 한국의 트위터 사용자 74%가 트위터로 동영상을 시청한다고 합니다. 특히 이 중 90%는 모바일 기기로 시청한 것으로 조사됐습니다. 그리고, 감상한 동영상 대부분은 영화, 음악, TV, 스포츠 등 엔터테인먼트 트윗에 대한 것이었습니다. 트위터는 최근에 동영상 스트리밍 기업 페리스코프(Periscope)를 1억달러에 인수하면서 본격적인 모바일 동영상 시장공략에 나섰습니다.

최근의 동영상 스트리밍 요구조건: 
  •  IP상에서 영상이 스트리밍되어야 한다 .
  • 영상은 실시간으로 보거나 주문해서 이용할 수 있어야 한다 .
  • 주문형 비디오 (Videoondemand)는 검색 , 플레이 , 멈춤이 가능해야 한다 .
  • 선택적이지만 , 실시간 영상도 짧은 시간 정도는 되감기 , 멈춤이 가능하고 영상 레코딩이 될 수 있어야 한다 .

글로벌 기업의 QA사례 (Google,Facebook, Atlassian)

우리 현실에 맞는 QA와 테스팅은 어떤 모습이어야할까? 이런 고민은 QA/테스팅 부서가 있는 회사면 꼭 한번은 하게되는 질문입니다. 이 고민에 대한 실마리를 다른 회사는 어떻게 QA를 하고 있는지를 살펴보면서, 스스로에게 질문을 하는 것에서 찾을 수도 있습니다. 여기에서는 글로벌 기업인 Google, Facebook, Atlassian의 사례를 찾아 간략하게 정리해봅니다.

1. Google

Google의 Tester
구글의 고참 디렉터이며, 테스팅 계열의 최상급자인 Patric Copeland는 책의 서문에서 이렇게 말하고 있습니다.

"구글은 전산학과 코딩 기술을 존중한다. 
테스터가 그 클럽에 동참하려면 훌륭한 전산 지식과 절묘한 코딩 기술을 갖추어야 한다."

우리나라에서 테스터로 업무를 시작한 사람들에게  Patric이 말한  훌륭한 전산 지식과 절묘한 코딩지식 을 갖추라는 조언은 이해는 가지만, 이를 달성해내기는 쉽지 않습니다. 대부분의 테스팅 업무란, 사용자에게 최상의 경험을 주기위해 앞서 경험을 해주는 대리자의 입장이 많았기 때문인 것 같습니다. 단지 경험을 미리 해주는 테스터에게는 엄청난 전산 지식도, 절묘한 코딩 스킬이 필요한 것은 아니기 때문인가? 라는 생각이 듭니다.
중간 생략....


2. Facebook


Facebook의 QA에 대한 내용은 facebook을 재직했던 엔지니어가 Quora에 등록한 답변을 토대로 정리했습니다. 2~3년 전의 내용이며, 현재 Facebook의 QA 상황과 차이가 있을 수도 있지만 충분히 참고할 만 한 것 같습니다.

Facebook의 QA

 별도로 독립된 QA Team이 없다. ‘Test engineering team’이 있었으나 이 팀은 Test infrastructure를 구축하고 유지보수 하는 업무입니다. 앞서 살펴본 회사들과 마찬가지로  개발자들이 직접 테스트를 작성하고 실행 및 유지보수 를 합니다. 개인 또는 팀이 하는 테스트보다 도그푸딩(dog-fooding)을 합니다. 출시 전에 일주일 정도는 임직원들이 미리 변경을 경험하고 버그를 올릴 수 있으며, 수동 테스트 보다 자동화 테스트를 합니다. 또한 릴리즈 24시간 전에 beta facebook에 미리 반영하여, 이에 대한 버그도 리포트 받고 있으며, 페이스북 베타테스터 프로그램도 운영하고 있습니다. 실제로, Facebook 채용 사이트를 살펴봐도 Google과는 달리 Test 및 QA 엔지니어가 별도로 나와있지 않은 것을 보면, 현재도 QA나 테스팅 엔지니어로 구분된 역할은 Facebook에 없는 것 같습니다.
중간생략...

3. Atlassian


Atlassian 블로그의 QA 시리즈 포스트를 요약하여 정리합니다. 

Atlassian의 QA
Atlassian의 테스팅 및 QA의 목표는 “높은 품질의 소프트웨어를 빠르게 배포하는 것”입니다. 인력구성은 다음과 같습니다. 
  • 개발 및 Team Lead (78)
  • 제품 관리자 (Product Manager) (10)
  • UX(UI) 디자이너 (6)
  • Tech writer(3)
  • QA 엔지니어 (6)


QA는 역할은 테스터가 아니며, 실제 수동테스트를 포함한 모든 테스트는 개발자가 수행합니다. Atlassian의 대표 제품인 JIRA에 대한 QA 프로세스는 아래와 같습니다.

중간생략...


2015년 8월 18일 화요일

애자일을 활용한 모바일 개발 프로젝트 개선방법

Ⅰ . 모바일 앱 시장의 성장과 현실

전 세계적으로 모바일 사용이 확산되면서 모바일 어플리케이션 ( 이하 앱 ) 시장의 규모도 급격하게 증가하고 있습니다 . 시장조사기관인 가트너에 따르면 모바일 앱 시장 규모가 지난해 52 억 달러에서 2014 년 580 억 달러로 10 배 이상 성장할 것으로 예상하고 있습니다 . 이는 애플 , 구글 , MS 와 같은 기존 모바일 플랫폼 사업자들의 오픈마켓뿐만 아니라 아마존과 페이스 같은 콘텐츠 및 서비스 기업들도 새로운 시장을 만들어나감에 따라 더욱 다양한 모바일 서비스가 가능해지고 이를 이용하는 사용자도 같이 확대되어 갈 것이기 때문입니다 .

모바일 앱 시장이 급격하게 성장하고 있지만 워낙 많은 앱들이 시장에서 치열하게 경쟁하다보니 사용자에게 주목 받기란 매우 어려운 일입니다 . 모바일 앱 마켓에서 상위에 링크된 경우 높은 인기를 누리지만 나머지는 거의 미미한 이용률을 보이고 있습니다 . 애플 앱스토어의 경우 , 상위 5 위에 등록된 앱은 절반 이상의 사용자가 이용하는 반면에 나머지는 2% 정도의 사용자만을 갖는다고 합니다 . 따라서 모바일 앱 시장은 소위 “ 부익부 빈익빈 ” 현상이 매우 극명한 곳이라고 할 수 있습니다 . 한국콘텐츠진흥원에서 발표한 “ 모바일 애플리케이션 비즈니스 현황과 전망 ”, 이라는 보고서에 따르면 , 국내에서 모바일 앱을 등록한 업체의 70% 정도가 20 명 이하의 중소기업이며 종업원 1 인당 연간 매출액은 1,200 만원에 (2011 년 기준 ) 불과하다고 합니다 . 특출난 1 인 개발자나 대규모 온라인 및 게임사를 제외하고는 생존하는 것조차 쉬운 일이 아닙니다 .

Ⅱ . 모바일 앱 개발의 특성과 이슈들

Ⅲ . 모바일 개발환경에 적합한 개발방법

자세히 보기 →

모바일앱 자동화 테스팅의 성공적 적용을 위한 8가지 문제점 극복방안과 자동화툴 소개

현재 애플 앱스토어에는 50만개 이상의 앱이 등록되어 있으며, 안드로이드 마켓에는 30만개의 앱이 등록되어 있습니다. RIM의 Playbook, MS Windows Phone, Window Mobile에 등록된 애플리케이션 숫자까지 합친다면 그 수는 엄청나며, 이에 모바일 애플리케이션의 자동화 테스팅은 필수적인 코스로 떠오르고 있습니다. 현 수준에서 모바일 앱 자동화 테스팅의 한계와 상용화 및 오픈 소스로 공개되어 주목받고 있는 자동화 테스팅 툴을 소개하려 합니다.

자세히 보기 →