2015년 8월 8일 토요일

NoSQL 데이터베이스로서 MySQL

최근 NoSQL 이 데이터베이스 영역에 한 축으로 자리잡고 있지만 , 기존 관계형 데이터베이스 (RDB) 사용자들에게 NoSQL 은 아직 낯설기만 합니다 . 이런 상황을 반영해 데이터 정합성이 중시되는 서비스에서 RDB 의 장점을 활용하면서 NoSQL 특징을 결합하려는 시도들이 이어지고 있습니다 . NoSQL 의 특징들을 추가하면서 RDB 기능을 보완하는 방법과 이왕 NoSQL 을 사용하려면 제대로 한번 해보는 차원에서 모델링까지 살펴보기로 했습니다 .

첫 번째 연재에서는 'MySQL as a NoSQL' 이라는 제목으로 MySQL 의 장점에 HandlerSocket Plugin 이나 Memcached Plugin 을 활용해 NoSQL 의 특성을 가미하는 방법과 성능에 대해 알아봅니다 . 2 회차 연재에서는 'MySQL 의 스케일 아웃 (Scale Out)' 에 대해 알아봅니다 . MySQL 의 Scale Out 기능의 약점을 보완하는 차원에서 대안적 스케일 아웃 방법들에 대해 살펴볼 계획입니다 . 3 회에서는 'NoSQL 데이터 모델일 ' 이라는 주제로 MySQL 을 본격적인 NoSQL 로 DB 로 사용하기 위한 모델링 방법 대해 소개할 계획입니다 .

데이터베이스 분야는 최근 클라우드 컴퓨팅과 소셜 네트워크 서비스의 등장 , 스마트 기기의 확산 등 컴퓨팅 환경 변화에 대처하고 내부적으로 데이터의 폭증과 원활한 서비스 지원을 위해 다음과 같은 과제를 해결해야 하는 환경에 놓여있습니다 .

Architecture Visualization(아키텍쳐 시각화) Part 2

지표란 직접 경험을 하지 않아도 현재의 상황을 알 수 있는 도구를 말합니다 . 옛날 제주도에서는 물이 귀해 빗물을 식수로 사용을 했습니다 . 빗물의 오염도를 파악하기 위한 지표로 , 개구리 ( 수놈끼리만 넣거나 , 암놈끼리만 넣거나 ) 를 사용했습니다 . 개구리들이 벌레들을 잡아먹어 물이 항상 청결한 상태를 유지할 수 있었으며 , 또한 개구리의 생존 여부로 물 오염도를 파악 할 수 있었습니다 .

이러한 지표의 한 예로 , Dependency Structure Matrix (DSM) 을 지난 호에 소개했습니다 . 이번 호는 또 다른 지표로써 , Clean Code 의 저자이자 객체 지향의 SOLID 원칙으로 유명하신 Robert C. Martin( 줄여서 Uncle. Bob) 님이 만드신 Instability/Abstractness Graph 를 설명하겠습니다 .


  • Instability
  • Abstractness
  • Main Sequence 와 Distance
  • STAN4J 와 그 외의 지표들

MS社, 윈도우10 출시 관련 주요 이슈 보고

MS 社 의 신규 운영체제인 윈도우 10 이 올해 7.29 일 ( 수 ) 출시 * 예정 인 바 , 이에 따른 국내 S/W 및 인터넷 이용환경 변화에 대한 이슈 분석

1. 새로운 브라우저 (‘Edge’) 출시 관련 이슈
윈도우 10 에서는 기존의 ‘ 익스플로러 11 ’ 과 신규 웹브라우저 인 ‘ 엣지 (Edge) ’ 를 동시 탑재하여 출시하나 엣지의 경우 ActiveX 등 플러그인 기술을 지원하지 않아 * 웹사이트 이용시 정상 동작이 되지 않을 수 있음

- 다만 , 동시 탑재된 익스플로러 11 의 경우 종전과 같이 ActiveX 를 지원 하므로 브라우저 설정 변경 ** 을 통하여 큰 문제 없이 웹사이트 이용 가능
* 엣지의 ActiveX 미지원 정책은 여러 차례 이슈화되어 대부분의 국내 개발자 및 이용자들은 인지

2. 운영체제 ( 윈도우 10) S/W 설치 관련 이슈
o 윈도우 10 OS 의 커널구조 * 가 변경 되어 HW 를 활용하는 일부 SW** 의 경우 수정개발이 필요하나 윈도우 10 출시 이후에나 개발 작업 완료 예정
* 커널 (kernel) : OS 를 구성하는 주요 뼈대로 하드웨어 관련 입  ·  출력과 명령어 처리를 담당
** 동영상 · 음성 편집프로그램 , 채팅 · 메신저 프로그램 , 스캐너 · USB 제어 프로그램 등

2015년 8월 7일 금요일

분산된 애자일 팀 간의 명확히 공유된 이해 제공

대부분의 애자일 개발관련 참고서적들은 동일 장소에 배치된(co-located) 팀들과 대면(face-to-face) 의사소통의 장점에 대해 말합니다. 기본적으로 동일 장소에 배치된 팀들은 의사소통이 더 쉽고 강한 유대관계를 형성하는 장점을 가집니다. 그러나 기술과 SW개발/관리도구(tool)들의 발전과 더불어 분산된 애자일 팀들(distributed Agile teams)이 많아짐에 따라 애자일 방법론상의 대면활동에 대한 강조는 SW개발 조직운영에 있어 부작용이 발생시킬 여지가 있습니다. 현재 SW개발/관리 툴들은 더 많은 유연성과 이동성을 보장함에 따라, 문서화를 통한 효과적인 의사소통 체계를 구축하는 것이 필요합니다.

  • SW 개발 프로젝트에 있어 문서화는 개발팀간의 오해가 없는 명확히 공유된 이해를 제공한다.
  • 문서화는 대면 의사소통에 비해 공유하기 쉬우며 분산된 개발팀의 기본적인 의사소통 수단으로 활용하는 것이 바람직하다.
  • 그럼에도 불구하고 대면 의사소통은 여전히 중요하다.

대량 스트림 데이터 처리 솔루션인 Oracle Complex Event Proces

오늘날 다양한 IT 환경에서 수많은 데이터가 쏟아지고 있습니다 . RFID 리더 , 바코드 스캐너 , 기계 장치의 센서는 물론 최근에는 중요 자원의 위치를 알려주는 GPS(Global Positioning Systems) 정보까지 다양한 데이터가 끊임없이 쏟아지고 있습니다 . 이렇듯 지속적으로 데이터를 발생시키는 시스템들이 많아지고 , 발생하는 데이터량 또한 점점 늘어가고 있는 상황에서 중요한 것은 어떻게 이 많은 양의 데이터 중에서 비즈니스적으로 의미 있는 데이터를 신속하게 추출하고 처리하느냐입니다 . 이러한 상황에서 복잡한 데이터를 처리하는 솔루션인 CEP(Complex Event Processing) 에 대해 설명하고자 합니다 .

Complex Event Processing 는 여러 이벤트 소스로부터 발생한 이벤트를 대상으로 실시간으로 의미 있는 데이 터를 추출하여 대응되는 액션을 수행하는 것을 말합니다 . 이때 이벤트 데이터는 스트림 데이터로써 대량으로 지 속적으로 입력되는 데이터 , 시간 순서가 중요한 데이 터 , 끝이 없는 데이터입니다 . 이러한 스트림 데이터는 전 통적인 관계형 데이터 베이스에서는 실시간 처리 및 분 석이 불가능합니다 . CEP 는 바로 이런 스트림 데이터를 실시간으로 분석하는 이벤트 데이터 처리 솔루션입니다 .  

Architecture Visualization(아키텍쳐 시각화) Part 1

변화의 충격을 감지해라 - Dependency Structure Matrix

소프트웨어는 사용자에게 유용해야 된다는 명백한 외부적인 관점도 있지만 , 품질이라는 내부적인 관점도 존재합니다 . 즉 소프트웨어가 잘 개발되고 있는지 품질을 파악할 수 있는 지표가 필요합니다 . 이번 연구에서는 소프트웨어의 품질을 평가할 수 있는 몇몇 시각화 기법을 전달합니다 .  

시각화의 필요성 (1000 피트의 관점 )

아키텍처의 품질을 평가하기 위해 , UML 로 그려진 아키텍처 다이어그램을 볼 수 있습니다 . 하지만 아키텍처 다이어그램의 작은 상자들은 전체 시스템을 나타내며 상자 간의 선은 시스템 간의 의존성 , 데이터 흐름 , 버스와 같은 공유자원인지 파악할 수 없습니다 . 이것은 비행기 밖 풍경과 같이 과도하게 추상화되어 있는 30,000 피트의 뷰 입니다 .

반면에 소스코드를 보며 품질을 평가 할 수 있는데 , 이것은 0 피트와 같은 바닥 레벨의 뷰로 비유할 수 있습니다 . 소스 레벨에서는 연관성 있는 몇 개의 객체의 구조도 보지 못할 만큼 많은 정보를 제공합니다 .

이 두 뷰는 소프트웨어 품질에 대한 올바른 정보를 제공하지 못하므로 , 0 피트와 30,000 사이인 , 1000 피트의 뷰를 보아야 합니다 . 1000 피트의 뷰는 메서드 개수 , 클래스 팬 아웃 , 순환 의존도와 같은 다양한 지표와 많은 양의 데이터를 접할 수 있습니다 .

의존성 분석 도구 DSM(Dependency Structure Matrix)

  • DSM 으로 보는 계층화
  • Change Propagator 를 주의해라
  • 의존성을 끊는 방법
  • 실 사례로 보는 DSM


자세히 보기 →

2015년 8월 6일 목요일

헬스케어 서비스를 위한 빅데이터 설계 포인트

헬스케어 서비스의 개념

 대부분의 서비스에서는 소프트웨어를 편의성이나 기능 증대에 활용하는 경우가 대부분이라 서비스 자체의 변화는 크지 않습니다. 하지만 질병의 치료와 예방을 함께 생각하는 헬스케어 서비스의 경우 소프트웨어가 차지하는 비중은 매우 높습니다. 질병의 발생 여부에 따라 환자의 치료나 상태 관리를 위해 병원을 방문해야 하는 것이 일반적이지만, ICT를 접목 시키면 직접적인 치료는 아니더라도 환자의 상태는 항시 관리할 수 있기 때문입니다.

 헬스케어 서비스는 기존 의료 서비스에 ICT 서비스를 접목한 서비스입니다. 그림1은 헬스케어 서비스의 개념을 나타낸 것입니다. 기존의 의료 서비스는 환자가 발생하면 병원과 약국에서 대면 의료를 통한 서비스를 하는 것이 일반적이었습니다. 하지만 헬스케어 서비스로 넘어오면서 환자는 물론이고 질병이 발생하지 않은 일반인 대상으로 다양한 서비스를 제공하고 있습니다. 더구나 ICT 기기의 발달로 인해 원격 진료라는 새로운 서비스도 나타났습니다.

기존 의료 서비스는 반드시 의료 기관을 통해 서비스를 받을 수 있었지만, 헬스케어 서비스는 헬스케어 기기, PC, 모바일 기기, 운동시설 등 다양한 기기의 정보를 통해 추가적인 서비스를 받을 수 있습니다. 병원에서 전달하는 정보는 전자의무기록(EMR, Electronic Medical Record), 처방전달시스템(OCS; Order Communication System), 의료영상저장전송시스템(Picture Archiving Communication System) 등이 있으며, 다양한 기기들이 전달하는 정보는 국제표준 전자건강기록(EHR; Electronic Health Record)가 있다. 전송된 정보들은 각각의 표준화된 규격에 맞춰 빅데이터로 관리되며, 중요 의료, 건강 정보를 분석하여 헬스케어 서비스를 제공하고 있습니다.

 헬스케어 서비스는 발전하는 IoT(Internet of Things) 개념을 적용하는 서비스 중에서 빅데이터 분석에 의해 개인의 특성을 파악하고 맞춤 서비스를 할 수 있는 대표적인 서비스라고 할 수 있습니다.















그림1. 헬스케어 서비스의 개념도