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 모델의 변화