AI는 사람과 똑 같은 사고를 갖게 하는데 목적이 있고 최근에는 사물인터넷(Internet of Things), 클라우드 컴퓨팅(Cloud Computing), 빅데이터(Big Data), 모바일(Mobile) 등과 결합되면서 상상 속에 있던 새로운 비즈니스가 만들어지고 있다. AI는 다양한 분야가 연구되고 있지만 그 중에서도 머신 러닝(Machine Learning)의 관심이 급격히 증가하고 있다. 인간을 이긴 구글의 알파고와 IBM의 왓슨처럼 머신 러닝을 기본으로 한 AI가 이제 영화 속이 아닌 현실에서 나타나고 있고, 시간이 갈수록 머신 러닝의 학습 속도는 점점 빨라져 인간의 뇌와 유사해지고 있다. 이번 회는 머신 러닝이 소프트웨어 활용에 어떤 영향을 미치는지 살펴보도록 한다.
머신 러닝의 동작
머신 러닝은 훈련 데이터(Training Data)를 통해 학습된 속성을 기반으로 결과를 예측하는데 목적을 두고 있기 때문에 데이터 마이닝(Data Mining)을 통해 미처 몰랐던 속성을 발견하는 것에 관심을 보인다. 일반적인 소프트웨어는 개발자가 모든 알고리즘, 로직, 명령어 등에서 필요한 것을 선택해 만들어낸다. 하지만, 머신 러닝의 경우는 자율적인 학습으로 최적의 결과를 만들어낸다.
그림1은 머신 러닝이 동작하는 방법을 간단히 나타내고 있다. 기존에도 프로그램에 의해 입력 받은 데이터를 가공하여 원하는 결과를 나타낼 수 있다. 수학에서 미지수 X의 값을 찾기 위해 많은 수식과 공식을 사용하는 것과 마찬가지다. 하지만, 머신 러닝의 경우는 정해진 수식이나 공식 없이 계속 학습을 하면서 결과를 찾아낸다는 점이 다르다. 개발자는 소프트웨어가 결과를 제시하는 방법을 만들어야 하는 것이 아니라 데이터를 어떻게 받아들이고 결과를 어떻게 보여줄 것인지에 대한 고민이 더 많아야 한다. 아래는 머신 러닝의 수행 단계를 나타낸다.
1. 자료 수집: 엑셀, DB 등의 자료, 텍스트 파일 등에서 학습을 위한 자료를 수집
2. 자료 준비: 데이터의 품질을 높이기 위해 누락, 예외 사항 처리 등을 예비 분석
3. 모델 훈련: 적절한 알고리즘으로 훈련 모델을 개발하고 시험 데이터로 모델을 테스트
4. 모델 평가: 모델의 정확성 여부를 시험하기 위해 평가한 후 정밀도를 결정
5. 성능 개량: 모델의 효율성 증대를 위해 더 많은 변수를 포함하여 모델의 성능을 향상
2016년 7월 19일 화요일
제조업의 소프트웨어 개발 프로세스 개선 활동
제조업에서도 소프트웨어의 필요성은 매우 높다. 더구나 첨단 기술이 점점 늘어나면서 제조 라인의 자동화는 더 체계적인고 효율적인 관리가 필요하기 때문에 소프트웨어의 기능은 더 많아지고 관리되는 데이터도 늘어나는 추세다. 이번 회에서는 제조업에서 사용되는 소프트웨어 개발 프로세스를 올바르게 적용해서 성공할 수 있는 방법이 무엇인지에 대해 살펴보기로 한다. ㈜현대파워텍의 이윤희 팀장을 만나 자세한 사항을 들어본다.
Q: 사례를 살펴보기 전에 제조업의 소프트웨어 개발에 프로세스가 필요한 이유에 대해 간략히 설명해 주시죠.
소프트웨어를 개발하는데 프로세스가 필요한 것은 당연한 얘기일 겁니다. 하지만, 제조업의 소프트웨어는 특히 더 필요합니다. 제조업에는 많은 설비, 장비, 그리고 데이터가 있기 때문에 관리되어야 하는 요소나 사람이 직접 보지 못하는 부분도 상당히 많습니다. 소프트웨어가 반드시 필요한 이유이기도 하고 체계적인 소프트웨어 개발이 필요한 이유이기도 합니다. 그림1처럼 제조업 R&D 로드맵의 핵심이 소프트웨어가 없어서는 되지 않는 구조입니다. 제조업의 고도화를 위해서는 어느 제조업이든 반드시 소프트웨어가 필요하죠.
Q: 사례를 살펴보기 전에 제조업의 소프트웨어 개발에 프로세스가 필요한 이유에 대해 간략히 설명해 주시죠.
소프트웨어를 개발하는데 프로세스가 필요한 것은 당연한 얘기일 겁니다. 하지만, 제조업의 소프트웨어는 특히 더 필요합니다. 제조업에는 많은 설비, 장비, 그리고 데이터가 있기 때문에 관리되어야 하는 요소나 사람이 직접 보지 못하는 부분도 상당히 많습니다. 소프트웨어가 반드시 필요한 이유이기도 하고 체계적인 소프트웨어 개발이 필요한 이유이기도 합니다. 그림1처럼 제조업 R&D 로드맵의 핵심이 소프트웨어가 없어서는 되지 않는 구조입니다. 제조업의 고도화를 위해서는 어느 제조업이든 반드시 소프트웨어가 필요하죠.
사용자 스토리 워크샵 사례 연구 - 사용자스토리 정의 편
SI 프로젝트에서도 사용자(고객)가 수행하는 비즈니스를 흐름도로 정의하는 프로세스가 있다. 비즈니스 흐름도, 업무 흐름도 등 다양한 이름으로 정의되지만 사용자가 해야 하는 일을 순서대로 보여준다. 비즈니스 흐름은 사용자가 어떤 비즈니스를 가지는지를 보여주기 때문에 매우 중요한 프로세스이지만 개발 프로젝트에서는 많은 시간을 할애하지 않는 것이 일반적이다. 이번 회에서는 사용자 스토리 워크샵의 사용자 스토리 정의에 대해 살펴보기로 한다. 명확한 사용자 스토리 정의를 통해 애자일 기반 프로젝트의 성공률이 높아지기를 기대한다.
사례 연구 전 확인 사항
사용자 스토리의 필요성
사용자 스토리는 사용자 스토리 워크샵의 핵심 작업 중의 하나다. 사용자가 어떠한 흐름으로 비즈니스를 진행하는지 보여주기 때문이다. SI 프로젝트에도 이와 유사한 비즈니스 흐름도나 업무 흐름도에서 사용자의 업무 흐름을 보여준다. 요구사항을 적용하기 전에는 (As-Is)업무 흐름도, 요구사항을 적용한 후에는 (To-Be)업무 흐름도로 표현된다. 그런데, 이 문서들은 사용자들이 알아볼 수 있는 문서는 아니었다. As-Is는 현재 하고 있는 업무를 나타내는 것이고, To-Be는 개발팀에서 작성하다 보니 시스템 중심으로 작성이 되어 있다. 시스템이 만들어지기 한참 전이기 때문에 사용자가 알아보기 어려운 것이 당연하였다.
사용자 스토리 워크샵의 주요 목적은 사용자와 개발팀 간의 커뮤니케이션이다. 서로 대화가 되기 위해서는 사용자의 업무 흐름이 사용자가 알아보기 쉽게 작성되어야 한다. 사용자 스토리를 만들기 위해 다양한 프로세스가 선행된다.
사례 연구 전 확인 사항
사용자 스토리의 필요성
사용자 스토리는 사용자 스토리 워크샵의 핵심 작업 중의 하나다. 사용자가 어떠한 흐름으로 비즈니스를 진행하는지 보여주기 때문이다. SI 프로젝트에도 이와 유사한 비즈니스 흐름도나 업무 흐름도에서 사용자의 업무 흐름을 보여준다. 요구사항을 적용하기 전에는 (As-Is)업무 흐름도, 요구사항을 적용한 후에는 (To-Be)업무 흐름도로 표현된다. 그런데, 이 문서들은 사용자들이 알아볼 수 있는 문서는 아니었다. As-Is는 현재 하고 있는 업무를 나타내는 것이고, To-Be는 개발팀에서 작성하다 보니 시스템 중심으로 작성이 되어 있다. 시스템이 만들어지기 한참 전이기 때문에 사용자가 알아보기 어려운 것이 당연하였다.
사용자 스토리 워크샵의 주요 목적은 사용자와 개발팀 간의 커뮤니케이션이다. 서로 대화가 되기 위해서는 사용자의 업무 흐름이 사용자가 알아보기 쉽게 작성되어야 한다. 사용자 스토리를 만들기 위해 다양한 프로세스가 선행된다.
2016년 7월 18일 월요일
개발자 입장에서 바라보는 클라우드 서비스의 발전
클라우드로 인한 패러다임의 변화
클라우드로 인해 어플리케이션과 서비스 개발에 대한 새로운 패러다임이 나타나고 있다. 온-프레미스(On-premise; 그림5) 환경에서는 물리적 서버 준비, 운영체제 설치, 서비스 배포 등에 수많은 시간이 걸렸지만, 클라우드를 활용하면서 단시간에 원하는 자원을 준비하고 서비스를 배포할 수 있게 되었고 확장과 가용성을 가질 수 있게 되었다.
① 컨테이너를 통한 서비스 배포 시간의 단축
다양한 서비스를 실행하는데 운영체제와 플랫폼의 제한 사항은 그대로지만, 자원을 효율적으로 사용하고 빠르게 서비스를 배포하고자컨테이너를 활용한다. 컨테이너는 기존 서버를 통해 2개 이상의 어플리케이션을 배포하는 부담을 줄이기 위해 서비스를 실행하는데 필요한 프레임워크, 라이브러리, 소스 코드를 별도의 이미지로 만들어 실행할 수 있도록 만든 것이다. 도커(Docker)가 컨테이너 서비스를 주도하고 있다.
개발자는 패키징 된 서비스를 단일 컨테이너에서 수백 개의 가상 서버에서 실행되는 수천 개의 컨테이너까지 쉽게 확장할 수 있다. 컨테이너 서비스를 통해 서비스를 원할 때마다 언제든지 수 초 내에 배포할 수 있다.
② 서버 없는 클라우드 함수의 등장
AWS(Amazon Web Service)에서 제안된 서버 없는 클라우드는 개발자가 간단히 파이썬, 자바로 작성하여 특정한 클라우드 서비스에반응하는 함수로서 실행할 수 있다. 서버 없는 클라우드를 활용하면, 모든 유형의 어플리케이션이나 백엔드 서비스를 별도 서버 없이실행할 수 있다. 소스코드를 업로드 하면 높은 가용성으로 실행하고, 가용성과 확장성 등 필요한 모든 것을 자동으로 고려해주기 때문이다.
AWS에서 제공하는 AWS Lambda는 기존 가상 서버, 컨테이너 서비스와 함께 서버 없이 확장성을 고민하지 않고 바로 원하는 어플리케이션을 빠르게 수행할 수 있다. 최근에는 이를 바로 개발 현장에 접목할 수 있는 Serverless Framework라는 오픈 소스 개발 플랫폼이 나와서 주목을 받고 있기도 하다.
클라우드 서비스 브로커(CSB; Cloud Services Brokerage)
IaaS가 활성화 되면서 클라우드의 장점을 알고 있는 업체들은 하나의 클라우드 벤더만 사용하지 않고 필요성에 따라 다양한 벤더를 사용하게 되었다. 이러한 다중 클라우드 사용은 다양한 서비스를 한 곳에서 사용할 수 있다는 장점도 있지만 클라우드 자원 관리가 복잡해지는 단점도 있다. 이런 불편함을 덜기 위해 CSB가 나타났다(그림6).
<그림6> CSB 서비스의 예
출처 : www.liaison.com
더보기
피드 구독하기:
글
(
Atom
)


