2015년 8월 22일 토요일

임베디드 SW 개발 방법론 part 1 : 임베디드 SW 개발 프로세스

애플 , 인텔 등 선진외국기업 적용방법론을 중심으로

90 년대 말 시작된 agile 개발 방법론은 2000 년대 들어와서 다양한 모습으로 개발자들에게 확산되었습니다 . 한편 70 년대 Water 모델로 시작된 Plan-driven 개발 방법론 은 지금도 대규모 프로젝트나 대기업에서 사용하는 주요 개발모델입니다 . 소규모의 프로젝트나 , 개발자들이 한 곳에 모여서 잦은 커뮤니케이션을 통하여 개발하는 경우는 Agile 을 선호하지만 , Agile 특성상 초보개발자들이 많은 경우는 적용하는 것이 나쁜 결과를 가져오는 경우가 있습니다 . 대규모 프로젝트는 Plan-driven 방법론을 선호하지만 , 프로젝트는 소규모로 나누어 Agile 을 적용한 성공 사례 역시 있습니다 . 임베디드 SW 개발은 타 개발과는 다른 몇 가지 특성이 존재합니다 . Hardware 관계성 , 양산 개념 , Software 와 Hardware 통합 아키텍처 등의 요인들로 인하여 , 타 SW 개발과는 다른 도메인 특성을 보입니다 . 그렇다면 , 임베디드 SW 개발은 Agile 와 Plan-Driven 중 어느 개발 방법론이 적합할까 ? 본 원고에서는 임베디드 개발 도메인의 특성을 살펴보고 , 그에 따라 어떤 방법론이 더 적합한 것인지 살펴보고자 합니다 .

  • Agile vs. Plan-driven 개발 방법론
  • 임베디드 SW 개발 방법론

2015년 8월 21일 금요일

클라우드 애플리케이션 퍼포먼스 관리를 위한 10가지 핵심 요소

대부분의 경우 프라이빗 클라우드 서비스에 필요한 애플리케이션이 우선적으로 등장하고, 이후 수요가 점차 증가됨에 따라 퍼블릭 클라우드 서비스와 이를 관리하기 위한 애플리케이션이 등장하게 됩니다. 점차적으로 자체개발이나 아웃소싱한 클라우드 애플리케이션이 늘어나면서 그 퍼포먼스를 모니터링하기 위한 필요성이 나타게 되는데, 클라우드 애플리케이션 퍼포먼스 관리(CAPM : Cloud Application Performance Management)는 사용자 경험을 관리하기 위한 퍼포먼스를 모니터링하고 분석합니다. 2세대 CAPM툴은 모니터링 에이전트를 활용해 근본 원인 분석하고 CAPM의 주요 요소들을 활용함으로써 클라우드 기반 애플리케이션들의 퍼포먼스 향상을 도모할 수 있는 것으로 기대됩니다.

  1. 리소스 vs. 애플리케이션 퍼포먼스 모니터링
  2. 프라이빗과 퍼블릭 인스턴스 (instance)
  3. 토폴러지 ( 네트워크 접속망 ) 탐지 (Topology discovery)
  4. 1 세대 CAPM 툴과 문제점
  5. 2 세대 CAPM 툴과 장점들
  6. 클라우드 애플리케이션 퍼포먼스 컴포넌트
  7. 에이전트와 애플리케이션
  8. 인프라스트럭쳐의 한 부분으로써의 인터넷
  9. Hosted SaaS CAPM 장점
  10. 근본 원인 분석 과제들

RIA를 위한 미디어 지원 기능 비교 : JavaFX 2 대 HTML5

현재 다양한 미디어파일 포맷들을 모두 결합하는 것은 거의 불가능합니다. 그래서 보통 개발자들은 어떤 기술이 어떤 인코딩 테크닉을 지원하는가에 대한 관심보다는 그들의 애플리케이션들이 잘 작동하기만을 원합니다. 맞춤형 미디어 플레이어를 만드는데 유리한 JavaFX와 코덱과 브라우저 지원에 한계가 있지만 미디어스트리밍에 더 나은 유저환경을 만들 수 있는 HTML5는 이러한 문제들을 해결할 기회를 갖는 기술입니다.

소프트웨어 프로세스 개선의 평가 및 측정 - 체계적인 문헌 리뷰

소프트웨어 프로세스 개선 (SPI: Software Process Improvement) 은 소프트웨어 개발 조직의 효율성과 효과를 증대하고 , 소프트웨어 제품을 향상시킬 수 있는 체계적인 접근방법입니다 . 본 논문은 서로 다른 SPI 활동에 사용되는 평가 전략 및 측정법을 식별하고 특성화를 목표로 , 1991 년부터 2008 년 사이에 발표된 148 편의 논문을 분석하였습니다 . 논문들의 체계적인 문헌 리뷰를 통하여 , SPI 활동 , 응용 평가 전략 및 측정 관점에 따라 분류하고 7 가지의 차별화된 평가 전략을 확인하였습니다 .

Ⅰ . 서론
소프트웨어 프로세스 개선 (SPI) 은 제품의 품질을 높이는 것뿐만 아니라 시장 출시 시간과 생산 비용을 줄이는 것을 목적으로 한다 [28]. SPI 관련 기술로는 Capability Maturity Model (CMM)[76], Capability Maturity Model Integration (CMMI)[2], [113], [114], ISO/IEC 15504(SPICE)[35], [111], Quality Improvement Paradigm(QIP)/Experience Factory[7],[8] 등이 있다 . 본 연구와 유사 연구는 다음과 같다 . Gorschek 와 Davis[167] 은 요구사항단계 (requirements process) 에서 변화의 영향은 서로 다른 수준에서 관찰되고 측정할 수 있다는 아이디어를 가지고 프로세스 변화의 영향을 평가하기 위한 개념적 프레임 워크를 제시하였다 . Gomez 등 [48] 은 “ 무엇을 , 어떻게 , 언제 측정하는가 ” 라는 세 가지 질문을 가지고 소프트웨어공학에서 SLR(Systematic Literature Review) 측정을 실시하였다 . Bellini 등 [10] 은 문헌연구를 통해 측정 이론 , 소프트웨어 메트릭스 , 메트릭스의 개발과 식별 , 측정 수집 , 측정의 평가와 분석 등 5 가지 주요 측정항목을 도출하였다 . Kitchenham 과 Charters[60] 는 소프트웨어 메트릭스 연구에서 최근 동향을 설명하기 위해 체계적인 매핑 연구를 실시하였다 . 본 연구에서는 SPI 활동의 측정에 좀 더 중점을 두었으며 프로세스 개선을 평가하고 분석하는데 어떤 측정법이 사용되는지를 조사하였다 .

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