2015년 10월 24일 토요일

리얼타임 시스템 프레임워크 및 아키텍처 part 1

증권 자동화 시스템으로 보는 리얼타임 시스템

리얼타임 ( 실시간 ) 이라는 단어가 가져오는 의미를 잘못 이해해 많은 이들이 리얼타임 시스템을 매우 빠른 응답을 주는 시스템으로 오해 하고 있습니다 .
리얼타임 시스템의 정확한 정의는 사용할 수 있는 자원이 한정되어 있는 상황에서 작업 수행이 요청되었을 때 제한된 데드라인 안에 결과를 내주는 것을 말합니다 . 생명이나 안정성이 중요시되는 군사 , 자동차 , 비행기 , 우주 탐사 로봇 등에는 필수적인 아키텍처이며 이러한 고 신뢰성 , 안정성을 추구하는 영역에서 프레임워크를 논하고 있습니다 . 연재를 통해 리얼타임 시스템에 대한 전반적인 이해와 실적용 사례를 공유하고자 합니다. 

Ⅰ . 리얼타임 시스템의 이해
Ⅱ . 아직 건재한 Real Time CORBA 의 위치
Ⅲ . 리얼타임 분산 시스템의 아키텍처
Ⅳ . 리얼타임 스케줄링 기법
Ⅴ . 증권 거래 시스템과 리얼타임 시스템

애플리케이션 생명주기 관리(ALM)하에서 지속적 개발의 6가지 비용절감요소

ALM 은 요구사항분석에서 유지관리까지 SW 개발 전주기적 관리 시스템이나 , 시스템 자체에 혼돈을 불러일으킬 수 있는 위험성을 내포하고 있으며 , 이는 곧 비용발생으로 연결됩니다 . 지속적 통합 방법은 SW 통합에서 발생할 수 있는 중요문제를 감소하고 보다 신속하게 SW 를 개발할 수 있다는 장점을 통해 요구사항분석 , 설계 , 테스트 등 각 요소별 비용절감효과를 보이고 있습니다 .

1. 요구사항 검증 비용
  • 요구사항 수집 및 검증은 ALM의 치명적인 비용요소중 하나인데, 요구사항이 적절히 수집되고 검증되지 않는다면 실제적인 요구사항과 일치되지 않은 잘못된 솔루션의 설계와 개발로 인해 시간을 낭비할 수 있음

2. 설계 검증 비용
  • 조기의 빠른 구축을 수행하는 지속적 개발은 개발 팀들이 중요한 설계 의문사항들을 우선순위화하도록 하고 설계 대안들을 프로토타입 할 수 있도록 하며 그것들을 조기에 테스트할 수 있도록 함 

3. 테스트 비용
  • 지속적 개발에서는 테스트가 자동화되고 구축작업에 편입되어, 테스트 자원과 시간이 자동화된 테스트를 설계하는데 사용됨

4. 회귀 오류와 재작업 비용
  • 회귀 오류 비용은 지속적 개발 절차인 자동화된 검토, 구축, 테스트 프로세스에 의해 완전히 회피될 수 있음

5. 통합 비용
  • 지속적 개발은 모든 모듈이 하나의 시스템으로 통합되도록 절차화 함

6. 릴리즈 비용
  • 지속적 개발은 개별적 릴리즈 주기에 대한 필요성을 부정함

효과적 개발 및 운영을 위한 10가지 필수 DevOps 툴

DevOps 는 개발 및 운영체계를 통합하여 , 빠른 서비스 개발과 반영을 위해 개발된 개발모델로 기존의 개발팀과 운영팀이 합쳐지는 등 변화의 폭이 매우 큼으로 인해 적용하기 어려움 . 이에 효과적인 개발 및 효율적인 운영을 위한 오픈소스 및 상용화 등 10 가지 필수 DevOps 툴을 소개합니다 .

1. Git and GitHub
  • 버전관리 시스템으로 알려진 Git은 코드의 버전을 저장하기 위한 저장소(repository)이고 GitHub은 코드가 다운로드 되고 공유될 수 있는 공개 관리 저장소(repository)임

2. Jenkins
  • 젠킨스는 Agile창시자 중 한 명인 마틴파울러씨가 주창한 지속적 통합(Continuous Integration)을 구현하기 위한 자바 오픈소스 소프트웨어로서 웹 어플리케이션의 형태를 하고 있음

3. Berkshelf
  • Riot Games에 의해 유지되는 이 오픈소스는 올바른 버전의 cookbook2)이 실행되는 것을 보장하기 위해 Chef서버로의 패치 및 배포 관리 방법을 제공함

4. Perforce
  • Perforce Software 사에 의해 개발된 이 제품은 버전관리 시스템으로 분산개발환경에서 즉각적이 대응성이 있어 지역적으로 분산되어 있는 팀간 공동 개발작업 등을 지원함

5. Nagios
  • 코드의 변경이 시스템 환경에 어떻게 영향을 미치는가를 모니터링하는 것은 어플리케이션 배포에 결정적임

6. Sensu
  • Sensu는 Nigios와는 오픈소스 모니터링 프레임워크임

7. LogStash
  • LogStash는 이벤트와 로그를 관리하는 툴로, 로그를 수집하고 파싱, 저장하여 추후 검색 등을 통해 사용할 수 있도록 웹 인터페이스를 제공함

8. Test Kitchen
  • 인프라 관리 자동화 솔루션기업인 Opscode 사에서 배포한 Test Kitchen 툴은 사용자의 cookbook 개발 과정에서 시뮬레이션이 가능함

9. Vagrant
  • 개발을 진행하다보면, 개발환경 구성에 굉장히 많은 시간이 필요하며, 참여하는 개발자의 수만큼 개발환경 구축에 드는 시간은 배가 되어 비효율적이며, 구축된 개발환경마다 버전 관리하기도 쉽지 않은 일임

10. Foodcritic
  • Foodcritic는 Chef를 조사하고 테스트하기에 매우 좋은 오픈소스로 페이스 북 시스템 엔지니어인 Phil Dibowitz가 추천함