오픈소스 소프트웨어는 인공지능(AI), 사물인터넷(IoT), 클라우드 빅데이터 등 다양한 분야에서 4차 산업혁명과 지능정보사회의 핵심 기술로 부상하고 있습니다. 글로벌 시장에서는 구글, 페이스북 같은 글로벌 대기업도 개방형 혁신활동을 중요하게 여기며 이를 위하여 자사의 기술을 외부에 공개하고 오픈소스 커뮤니티를 중심으로 핵심기술을 주도하려는 노력을 하고 있습니다.

전통적으로 기술혁신은 자체적인 우수 인적자원의 확보 및 효율적 내부자원의 활용을 중심으로 조직 내부의 연구개발을 통해 이루어져 왔습니다. 이러한 방식은 아이디어의 발굴에서 기초연구, 제품개발, 사업화에 이르는 모든 기술혁신의 과정을 기업 내부에서 독자적으로 수행하는 것을 의미합니다. 

그러나 기술의 복잡성이 증대하고 제품 수요가 다양해지고 시장경제의 글로벌화가 가속되며 기술혁신의 비용은 급증하는 상황을 맞이하여 조직의 연구개발 생산성을 제고하기 위해 기술혁신 과정에서 외부와 협력하는 현상이 확대되고 있는데 UC버클리 대학의 Chesbrough 교수가 주창한 개방형 혁신(open innovation) 이론에 따르면 개방형 혁신의 개념을 다음과 같이 요약하고 있습니다.

“개방형 혁신은 기업이 안으로의 지식 흐름(inflow)과 밖으로의 지식 흐름(outflow)을 적절히 활용하여 내부의 혁신을 가속화하고 혁신의 외부 활용 시장을 확대하는 것이다. 개방형 혁신은 기업들이 내부 아이디어뿐 아니라 외부 아이디어도 활용할 수 있고, 또 활용해야 하며, 자사의 기술을 상업화하여 시장에 진출할 때 내부뿐 아니라 외부 경로도 사용할 수 있고, 또 사용해야 함을 전제하는 혁신 패러다임이다. 개방형 혁신과정은 내부와 외부 아이디어를 결합하여 아키텍처와 시스템을 구현한다. 이 아키텍처와 시스템에 대한 요구 사항은 비즈니스 모델을 통해 정의된다. 비즈니스 모델은 내부와 외부 아이디어를 활용하여 가치를 창출하고 그 창출된 가치의 일부를 자사의 몫으로 전유하기 위한 내부 메커니즘을 정의한다. 개방형 혁신은 부가가치를 창출하기 위해 내부 아이디어가 외부 경로, 즉 기업의 기존 비즈니스 모델 밖에 있는 채널을 통해 시장으로 나갈 수 있음을 전제한다 (Chesbrough 2006b: 1)” 

이론에 따르면 개방형 혁신은 연구, 개발, 상업화에 이르는 일련의 기술혁신 과정에서 조직 내부와 외부 사이에 일어나는 모든 형태의 지식 교류 활동을 의미하며, 집단 지성을 활용한 지속적인 개선과 사용자 피드백을 반영한 기술혁신이 이루어지는 오픈소스 커뮤니티는 개방형 혁신 활동의 대표적인 예로 볼 수 있습니다.

우리나라도 최근 이런 흐름을 반영해서 전통적인 연구개발을 오픈소스 개발방식으로 진행하려는 오픈R&D에 대한 학교와 기업의 흐름이 증가하고 있죠. 

저는 리눅스 커뮤니티 하모니카(http://hamonikr.org)를 운영하고 있는데 최근에 활발하게 커뮤니티가 성장하고 있으며 현재 하모니카 커뮤니티는 월평균 만명정도의 방문자가 있습니다. [참고] 웹로그 분석 : http://hamonikr.org/board_aMBI05/49687

때문에 저 자신도 오픈소스 커뮤니티 운영에 고민이 있고 그러다 보니 오픈소스 커뮤니티의 구축과 운영을 어떻게 하면 좋을지에 대한 현장의 고민을 자주 듣습니다. 

오늘은 오픈소스 커뮤니티를 구축하고 운영하는데 무엇이 필요할지 정리해 보겠습니다.


오픈소스 커뮤니티 현황 

오픈소스 커뮤니티[5]란 누구에게나 프로그램의 소스코드에 대한 동등한 접근을 보장하고 책임과 권한을 공유하며 지속적인 개발자와 사용자의 기여에 의해서 프로젝트가 변하는 커뮤니티를 의미하며, 오픈소스 커뮤니티를 기반으로 형성되는 소프트웨어 개발 모델은 소프트웨어 릴리스를 위한 활동을 중심으로 형성되는 개발자 커뮤니티와 공개된 소프트웨어에 대한 테스트, 버그 제출, 의견 제시 등을 중심으로 형성되는 사용자 커뮤니티가 존재합니다.


그림 1 Open Source Development Model


정보통신산업진흥원의 최근 조사 자료에 의하면 전 세계 대표적인 오픈소스 소프트웨어의 소스코드 저장소인 깃허브(Github)에서는 약 38만 건의 프로젝트 개발이 활발히 진행 중이며, 약 2,000만 명이 약 16만 개의 오픈소스 커뮤니티에서 소프트웨어 개발 및 프로젝트 기여를 위해 사용자․개발자로 참여하고 있다고 합니다. 이에 비해 국내의 경우 총 248개의 오픈소스 커뮤니티가 운영중인 것으로 파악되어 글로벌 대비 0.1% 수준의 규모이며 그 중에서도 사용자 커뮤니티 214개(86%), 개발자 커뮤니티 34 개(14%)로 국내 오픈소스 커뮤니티의 다수는 오픈소스의 사용자 커뮤니티로 조사되었습니다. 


조사 결과에 따르면 해외에서는 여러 재단을 중심으로 커뮤니티에서 오픈소스 프로젝트의 개발 참여와 기여가 활발하지만 국내에서는 개발에 참여보다는 오픈소스 커뮤니티가 제공하는 결과물을 활용하거나 사용법을 묻는 것이 대부분으로 나타났으며 또한 국내 오픈소스 커뮤니티 중 해외 오픈소스 커뮤니티와 프로젝트를 공유하거나 국제 행사 참가를 통해 교류중인 커뮤니티는 14개로 파악되었습니다. 국내의 오픈소스 생태계는 생산자 관점의 오픈소스 커뮤니티 활용이 매우 저조한 실정임을 알 수 있습니다. 따라서 향후 국내 기업의 오픈소스 커뮤니티 기반 개방형 혁신을 확산하기 위해서는 현재의 사용자 커뮤니티 중심의 국내 오픈소스 커뮤니티를 글로벌 개발자 커뮤니티와 상호 협력할 수 있도록 지원하는 노력이 필요하다고 생각합니다.


오픈소스 커뮤니티의 구축 


직접 오픈소스 커뮤니티를 구축하기 전에 먼저 원하는 공개하려는 소프트웨어와 유사한 관심사에 대한 커뮤니티가 국내·외에 이미 존재하는지 검색하는 것이 중요합니다. 

만약 동일한 관심사의 커뮤니티가 이미 존재하는데 새로운 커뮤니티를 형성하려고 하면 참여자들의 커뮤니티의 신규 생성에 대한 당위성을 설득하기 어려우며 기존의 다른 오픈소스 커뮤니티의 지지를 얻기 힘들기 때문입니다. 따라서 만약 유사한 관심사를 다루는 오픈소스 커뮤니티가 이미 존재한다면 별도의 커뮤니티를 생성하여 새로운 기반을 형성하는 것 보다는 해당 커뮤니티에 참여하여 협업하는 것이 가장 좋습니다.

이 경우에는 이미 오픈소스 커뮤니티 활성화의 기반이 존재하기 때문에 공개하려는 소프트웨어를 해당 커뮤니티의 사용자들이 사용할 수 있도록 해당 기능을 추가로 제안하여 기존 공개된 소프트웨어의 기능을 강화하는  방식의 접근이 필요합니다.

기존의 커뮤니티 중 공개하려는 소프트웨어와 유사한 관심사를 가진 커뮤니티가 없는 경우 새로운 오픈소스 커뮤니티는 생성하게 되는데, 이렇게 생성되는 오픈소스 커뮤니티의 성장 단계는 Tech-nical Stage, Open Source Stage, Ecosystem Stage의 세 가지 단계로 구분할 수 있습니다.


그림 2 오픈소스 커뮤니티 성장단계


Technical Stage

Technical Stage는 오픈소스 커뮤니티의 참여자들 중 개발자들 보다는 사용자들을 대상으로 공개한 소프트웨어의 바른 사용 방법과 권한을 제공하는 것에 중점을 두는 단계이며 이 단계에서는 공개한 소프트웨어의 라이선스를 컴포넌트 별로 식별한 소프트웨어 라이선스 프레임워크를 통해 프로젝트의 라이선스 정책을 사용자들에게 배포하고 공개한 소프트웨어의 기능을 확인할 수 있는 프로그램 데모를 제공하는 것이 필요합니다. 프로젝트를 소개할 수 있는 웹사이트, 제공하는 소스코드를 다운로드 할 수 있는 공개된 저장소, 의사 소통을 위한 메일링 리스트와 커뮤니케이션 채널, 프로그램의 버그를 추적관리 할 수 있는 버그 트래킹 도구, 각종 문서를 쉽게 작성해 공유할 수 있는 문서화 도구 등이 필요하게 되며 사용자들이 공개된 소프트웨어를 활용할 수 있는 범위와 사용에 따르는 책임을 명확하게 인지할 수 있도록 준비해야 합니다.


Open Source Stage

Open Source Stage는 오픈소스 커뮤니티에 참여하는 사용자와 개발자를 대상으로 잘 구성된 오픈소스 커뮤니티 거버넌스 모델을 구축하는 데 중점을 두는 단계이며 이 단계에서는 커뮤니티 참여자들에게 프로젝트의 구조를 쉽게 설명하는 문서를 준비하고, 프로젝트의 로드맵을 제시하게 됩니다. 또한 커뮤니티 참여자가 어떻게 참여할 수 있는지를 개발자와 사용자로 구분하여 자세히 알려주고, 커뮤니티 내 분쟁이 일어나거나 의사결정이 필요할 때 어떤 방식의 의사결정과정을 따르게 되는지를 투명하게 공개해야 합니다.

오픈소스 커뮤니티의 전략적 방향에 따라 수많은 유형의 거버넌스 문서가 필요할 수 있으나 일반적인 오픈소스 커뮤니티 거버넌스 문서에 포함되어야 하는 공통적인 요소는 다음과 같습니다.

    • 개요 (overview)

    • 역할과 책임 (roles and responsibili-ties)

    • 지원 (support)

    • 기여 과정 (contribution process)

    • 의사결정 과정 (decision making pro-cess)


Open Source Stage 단계에서는 커뮤니티 참여자들의 역할과 책임에 따른 운영 조직이 구성되고 커뮤니티 운영 조직과 커뮤니티 참여자 간 투명한 합의를 기반으로 커뮤니티 운영이 이루어져야 합니다. 이를 위해서 프로젝트 마일스톤과 릴리스를 관리할 수 있는 프로젝트 관리도구, 개발자 및 사용자를 위한 포럼, 이슈관리, 자동화 빌드, 소프트웨어 품질 가시화, 문서 협업 도구 등이 필요하며 외부의 참여자들이 프로젝트에 어떻게 기여할 수 있는지 자세히 안내하는 문서를 준비하고, 커뮤니티의 참여자들과 지속적으로 소통을 유지하는 것이 중요합니다 


Ecosystem Stage

공개한 소프트웨어의 사용자의 수가 늘어나고 오픈소스 커뮤니티가 성장하면서 커뮤니티 참여자들에 의한 사용자 지원으로는 기업 사용자들이 요구하는 서비스 수준을 제공하지 못하는 문제가 발생하게 되는데 Ecosystem Stage는 오픈소스 커뮤니티의 확산과 지속가능성을 보장하기 위하여 공개한 소프트웨어를 이용하여 비즈니스에 활용하는 기업 멤버들과 다른 오픈소스 커뮤니티와 함께 상생협력을 중점으로 운영하는 단계입니다. 따라서 이 단계에서는 프로젝트를 지원할 수 있는 기업들로 구성된 비즈니스 협의체가 조직되고 공식 기술지원 파트너 기업이 커뮤니티에서 홍보되어 기업에서 공개된 소프트웨어를 사용하기 위한 신뢰성을 제공할 수 있도록 커뮤니티에 참여하는 기업들을 중심으로 긴밀한 관리가 필요합니다.

이클립스 재단의 경우 다음과 같이 사용하는 프로젝트의 파트너 기업들이 제공하는 제품을 소개하는 마켓플레이스를 직접 운영하며, 활용 사례를 소개하고, 공식적인 기술지원이 가능함을 홍보하여 프로젝트의 신뢰성을 확보하고 있습니다.


그림 3 Eclipse Foundation Marketplace


이처럼 오픈소스 커뮤니티가 원활한 지속적 운영을 보장하기 위해서는 공개한 소프트웨어를 기반으로 기술지원을 제공하는 파트너 기업을 발굴하고 기업 멤버를 커뮤니티에 흡수하여 커뮤니티의 발전방향이 커뮤니티 참여 기업의 비즈니스 전략에 영향을 미치는 관계가 형성되어야 자연스럽게 커뮤니티 지속을 위한 재원 확보가 이루어지고 향후 공개한 오픈소스 프로젝트를 중심으로 성공한 재단의 형태로 성장하는 것을 기대할 수 있습니다.


오픈소스 커뮤니티의 운영 


오픈소스 소프트웨어 프로젝트 및 커뮤니티 운영이 성공하기 위하여 가장 중요한 요소는 투명성과 문서화를 꼽을 수 있습니다. 

투명성은 프로젝트 관련하여 참여하는 사람들과 외부 참여자들에 대한 프로젝트 관련 도메인 및 기능을 어떻게 유지할 것 인가에 대한 명시를 의미하는데 오픈소스 소프트웨어의 특성상 투명성의 유지는 대단히 중요할 뿐 만 아니라, 기업에 의해서 주도되는 오픈소스 소프트웨어라면 투명성의 확보는 해당 오픈소스 소프트웨어 커뮤니티의 운명을 쥐고 있는 열쇠라고 해도 과언이 아닙니다. 

어떤 오픈소스 소프트웨어 개발자들도 보이지 않는 장막 뒤에서 펼쳐지는 오픈소스 소프트웨어에 참여하고 싶은 사람은 없으며 특히 기업이 오픈소스 소프트웨어 전환을 시도할 경우, 그 동안 기업 내부의 습관에 의해 투명성을 소홀히 하고 내부 프로세스를 공개하지 않는 경우가 있는데, 그런 경우 커뮤니티를 활성화하기란 매우 어려우며 오픈소스 소프트웨어 커뮤니티로의 전환의 실패로 이어질 확률 또한 매우 높습니다.

오픈소스 커뮤니티에 투명성이 필요한 요소는 공개한 소프트웨어의 비전, 로드맵, 릴리스 계획, 형상관리 계획, 커미터 자격 조건, 새 기능 추가 또는 소프트웨어 패치의 제출 과정 등이 대상입니다. 

오픈소스 커뮤니티 운영의 다른 한가지 중요한 요소는 문서화입니다. 실제로 오픈소스 소프트웨어는 자발적으로 참여하는 사람들이고 개발자 위주로 돌아가는 생태계이기 때문에, 문서화에 소홀하게 되는 경우가 많습니다. 

커뮤니티의 운영을 위해서 공개한 소프트웨어 자체에 대한 문서화와 오픈소스 커뮤니티의 구조 및 프로세스에 대한 문서화도 포함하여 작성해야 합니다. 문서를 통해서 커뮤니티 거버넌스 모델 명시, 커뮤니티 구조 및 프로세스 명시뿐만 아니라, 해당 소스코드에 대한 문서화도 명확하게 해두어야 많은 사람들이 참여하여 오픈소스 소프트웨어 커뮤니티를 활성화 시키게 되기 때문에 커뮤니티에 참여하는 개발자 및 사용자들이 쉽게 이해하고 도움을 받을 수 있으며, 참여자들이 쉽게 편집할 수 있는 수준의 문서화를 제공하는 노력이 중요합니다.


마치며


해외의 경우 Apache, Eclipse, Openstack, Linux 등 다양한 오픈소스 재단이 설립되어 클라우드, 빅데이터, 인공지능 등 분야에서 핵심 기술을 주도하고 있는데 비해 국내에서는 공개된 소프트웨어를 가져다 쓰는 사용자 커뮤니티를 중심으로 오픈소스 커뮤니티가 형성되어 있으며 글로벌에 영향력이 있는 개발자 커뮤니티는 찾아보기 힘든 실정입니다.

최근 우리 정부는 국가의 ICT R&D 경쟁력 강화를 위한 지속적인 정책적 노력과 집중 투자에도 불구하고, 창의적․선도적 혁신역량 제고와 성과확산에 한계를 인식하고 개방형 혁신의 장점을 반영한 핵심 원천기술의 오픈R&D를 추진하여 미래 유망기술을 글로벌 시장에서 선도하고 연구개발 결과물의 활용도를 제고하기 위하여 노력하고 있으나 외부의 참여자들과 협력하는 오픈소스 커뮤니티 기반의 개방형 혁신에 익숙하지 않은 연구기관들은 체계적인 관리모델의 부재로 인한 혼란이 가중되고 있습니다. 

오픈소스 커뮤니티를 중심으로 세계시장 기술 경쟁력 기반확보를 위해서 정부에서는 오픈소스 생태계를 이해하고 소프트웨어 기술 연구개발을 오픈소스 프로젝트를 방식으로 전환하고 오픈소스 커뮤니티를 통한 사용자 저변이 확산될 수 있도록 지속적인 노력을 기울여야 하며 기업의 경우 오픈소스 커뮤니티에 참여하는 내부 개발자에 대하여 비판적인 시각에서 벗어나 글로벌 오픈소스 프로젝트의 참여와 기여는 기업의 우수한 기술력을 홍보하는 효과적 수단임을 인식하고 내부 개발자의 오픈소스 커뮤니티 참여 활동을 적극 권장하고 기업의 비즈니스 전략에 오픈소스 커뮤니티와 연계한 개방형 혁신을 위한 노력이 필요합니다.


참고문헌

  • 김석관 : Chesbrough의 개방형 혁신 이론. 과학기술정책, 2008 

  • OW2 : open source software the governance makes the difference. https://www.slideshare.net/OW2/open-source-software-the-governance-makes-the-difference, 2015

  • 조재홍 : 공개SW 소비국을 넘어 기여국으로 성장을 위한 제언. NIPA, 2018









서비스를 운영하다보면 서버에서 이메일을 발송할 일이 있을때 여러가지 이유로(보안상 계정 관리, 발송한 메일을 확인 등) 지메일 계정으로 쓰고 싶은 경우가 종종 있습니다. 지메일은 메일사본을 보관해주고 웹인터페이스를 제공하기 때문에 저는 중요한 고객서비스를 제공할때 자주 사용하고 있습니다. 

이번에 신규서버에 설정할 일이 생겨서 설정 과정을 공유합니다.


이번에 제가 테스트한 환경은 Linux Mint 18.3 입니다. 

하모니카 커뮤니티 에디션, Linux Mint 18.3, Ubuntu 16.04 등은 모두 동일한 방법을 사용해서 적용하시면 됩니다.


패키지 설치

필요한 모든 패키지 설치는 다음과 같이 실행합니다.

sudo apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules


처음 설치하시는 경우 postfix 설정 도우미가 어떤 용도로 사용할지 물어보게 됩니다. 이때 Internet Site 를 선택하세요.


postfix 환경설정

postfix 설정파일 편집

sudo vi /etc/postfix/main.cf 명령으로 설정파일을 편집합니다. 

항상 편집을 시도하기 전에 원본을 복사해서 보관해두는 것을 잊지마세요.

파일의 내용은 아래내용을 그대로 사용합니다.


# gmail smtp setting

relayhost = [smtp.gmail.com]:587

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

smtp_sasl_security_options = noanonymous

smtp_tls_CAfile = /etc/postfix/cacert.pem

smtp_use_tls = yes


계정정보 파일 생성

sudo vi /etc/postfix/sasl_passwd 명령으로 계정정보 파일을 생성하고 아래의 붉은색부분을 자신의 지메일 계정 정보로 적습니다.

[smtp.gmail.com]:587    USERNAME@gmail.com:PASSWORD

postfix 에서 사용할 수 있는 db파일로 변환

다음의 명령으로 계정정보 파일을 루트만 접근하도록 변경하고 postfix에서 사용하는 파일형태로 변환해 줍니다.

sudo chmod 400 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

CAfile 생성

환경설정에서 정의해준 CA파일을 다음과 같이 생성해 줍니다.

cat /etc/ssl/certs/thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem


postfix 서비스 재시작


sudo /etc/init.d/postfix reload


테스트

만일 mailutils 가 설치되지 않은 경우에는 이 명령어가 동작하지 않습니다. 설치가 되지 않은 경우에는 다음과 같이 설치해줍니다.

sudo apt install mailutils


메일발송을 다음과 같이 테스트 해 봅니다. 붉은색 부분을 자신이 확인할 수 있는 이메일계정으로 변경해주세요.

echo "postfix로 발송한 메일입니다" | mail -s "Postfix 메일 테스트" 수신이메일주소


디버깅

문제가 발생하여 로그를 확인하고 싶은 경우는 

tail -f 10  /var/log/mail.log 명령어로 postfix의 작업과정 확인합니다.



지메일 환경설정

2단계 보안인증

게정 로그인 정보가 정상임에도 불구하고 다음과 같은 오류가 로그파일에 남는 경우에는 지메일에서 추가적인 환경설정이 필요합니다.

postfix/smtp[21326]: CF7CE24225C: SASL authentication failed; server smtp.gmail.com[108.177.125.109] said: 535-5.7.8 Username and Password not accepted. Learn more at?535 5.7.8  https://support.google.com/mail/?p=BadCredentials k24sm23509527pfj.32 - gsmtp


이 이유는 지메일의 보안설정때문에 발생합니다.

먼저 아래 링크에서 2단계 인증을 사용하도록 변경합니다. 이때 보안코드를 받을 수 있는 휴대폰이 있어야 합니다.

https://myaccount.google.com/u/2/security



앱 비밀번호 생성

인증을 마쳤으면 다음과 같이 앱 비밀번호를 생성해줍니다. 새로운 앱을 원하는 이름으로 만들고 이때 발급되는 비밀번호를 복사해둡니다.


다음과 같이 이전에 설정한 파일의 비밀번호 대신 복사한 비밀번호를를 사용하도록 변경합니다.

sudo vi /etc/postfix/sasl_passwd 


[smtp.gmail.com]:587    USERNAME@gmail.com:발급받은앱비밀번호

저장해주고 다시 변경된 내용을 postfix에서 사용하는 파일형태로 변환해 줍니다. 저장이 안되는경우는 파일의 쓰기 권한 때문입니다. vi 에서는 저장할때 :wq! 하시면 강제 저장이 됩니다.

sudo postmap /etc/postfix/sasl_passwd

테스트 및 확인

다음과 같이 테스트 해봅니다.

echo "postfix로 발송한 메일입니다" | mail -s "Postfix 메일 테스트" 수신이메일주소




티스토리에 정착하여 글을 쓰기 시작한지 10년째 되었네요.

계속해서 매월 한 개 이상의 글을 적어왔는데, 최근 몇 년 동안은 포스팅을 거의 못했습니다.

시간이 지나고 업무경험이 쌓일수록 생각은 많은데 글을 쓰는 건 더 조심스러워 지네요.


오늘은 4차산업혁명에 대한 이해와 오픈소스는 어떤 역할을 하는지 생각해 보겠습니다.


마이클 포터 교수는 IT가 3번에 걸쳐 큰 변혁의 물결을 가져오고 있다고 이야기 합니다.

- 제 1 물결은 1960년대부터 70년대까지 주문처리나 경비지급, CAD, 생산관리 등 가치사슬의 개별활동을 자동화하면서 기존 수작업에 비해 비즈니스 생산성이 크게 향상.

- 제 2 물결은 1980년대 상용 인터넷이 탄생하고 90년대등러 고속 대용량화와 저가화가 진행되면서 인터넷을 통해 컴퓨터간 쉬운 연결이 가능.

- 제 3 물결은 최근에 나타나는 현상으로 제품에 센서와 프로세서, 소프트웨어, 연결 기능등이 내장되어 제품이 만들어 내는 데이터가 클라우드에서 수집, 분석되어 제품의 기능과 성능을 크게 향상.


이러한 제 3의 물결의 제품을 포터는 스마트 커넥티드 제품이라고 부르며 모니터링, 제어, 최적화, 자율성의 4단계로 구분되는 역량모델을 이야기합니다.



마이클 포터의 이러한 전망에 대해 PTC의 헤플만은 스마트 커넥티드 제품을 실현하기 위해서는 제품, 연결기능, 제품 클라우드, 보안기능, 외부 게이트웨이, 업무 시스템과 통합 등으로 구성된 새로운 기술 스택이 필요하다고 이야기 합니다.



제가 이해하고 있는 4차산업혁명은 온라인과 오프라인이 연결되는 온디멘드 서비스 유형에서 나아가, 모든것이 연결된 세상(IoT), IoT 로 수집되는 데이터의 CPS(Cyber-Physical System)에서 분석, 분석에서 나아가 기술과 사람의 의사결정력이 결합된 의사결정체계가 각 산업에서 분산을 통한 의사결정의 위임을 담당할때 성공적인 모습이라고 생각합니다. 따라서 많은 기업들이 자사의 제품 가치에 대한 높은 이해와 수집되는 데이터 분석기술에 대한 융합이 가능한 전문가를 요구하고 있으며 CDO(최고데이터책임자)를 둔 기업도 출현하고 있습니다.


IT 기업의 입장에서 보면 향후 4차산업혁명의 물결에 대응하기 위해서는 다양한 디바이스간의 연결이 가능한 기술(IoT framework, gateway, network protocol), 데이터를 수집하고 분석하는 기술(Bigdata analysis architecture, 분산파일시스템 응용기술), 데이터 기반 실시간 의사결정기술(AI, context decision making) 등이 중요하게 대두 될 것이라 생각됩니다.


현재 이러한 중요 기술들은 국내에서 원천기술을 확보하고 있는 경우가 거의 없으며, 대부분의 핵심기술은 오픈소스 프로젝트에서 제공됩니다. 따라서 앞으로는 시장에서 오픈소스를 활용한 기술개발이 더욱 심화될 것이고 기업에서 오픈소스 활용 거버넌스를 제대로 준비하고 않아서 발생되는 문제점도 커질 것입니다.  


때문에 향후 4차산업혁명의 성공을 위해서 조직은 오픈소스 기술에 대한 경험 축적과 함께 오픈소스 거버넌스의 조직 내 구축이 함께 되어야 할 것입니다.




얼마전 회사직원이 클라우드 컴퓨팅이란 무엇을 말하는지 질문하는데, 
"기업한테 참 좋은데..이거 참 설명할 수가 없네..(남자한테 참좋은데 하는 CF 아시죠?ㅋ)" 하는 느낌이 들었습니다.

최근 몇년동안 클라우드 컴퓨팅에 대해서 많은 이야기들이 논의 되고 있고, IT분야의 다른분들과 이야기 하다보면 클라우드 컴퓨팅에 대해서 이야기를 자주 나누게 되지만, 막상 설명을 하려면 말하기가 어렵더군요. 마침 오픈소스기술이 클라우드 서비스에 어떻게 사용되는지 모 잡지사 기자님과 이야기할 기회가 있어서, 대충 자료를 좀 조사해 보았습니다.

우선 클라우드 컴퓨팅이란 무엇인지부터 이야기해야겠죠

클라우드 컴퓨팅이란 ? 
위키피디아, 가트너, 포레스트 등에서 여러가지 정의를 내리고 있지만, 한마디로 이야기하자면 인터넷기반의 정보기술을 이용하여 사용자에게 유연한 확장성을 제공하는 서비스를 의미한다고 생각하면 될것 같습니다. 저는 그리드컴퓨팅, 유틸리티 컴퓨팅, 가상화기술, 오픈소스, 웹서비스, SBC(Server Based Computing) 등의 IT기술을 사용해서 사용자에게 생산과 관리부분의 책임을 덜어주고 비지니스에 집중할 수 있도록 도와주는 기술들을 모두 아우르는 것으로 이해하고 있습니다.


클라우드 컴퓨팅은 서비스의 모델에 따라서 SaaS(Software as a Service), PaaS(Platform as a Service), IaaS(Infrastructure as a Service) 로 구분하기도 하며, 서비스에 사용되는 데이터센터의 위치에 따라서 Private Cloud, Public Cloud, Hybrid Cloud, Community Cloud 로 구분하기도 합니다. (상세내용은 발표자료를 참고하세요)


<클라우드 컴퓨팅이 가져다주는 이익>

중소기업의 입장에서 클라우드 컴퓨팅 서비스의 이용은 생산과 관리에 부담이 줄어들면서 직접적인 비용이 절감되며 모바일오피스구축을 통한 업무연속성을 확보할 수 있는 장점이 있으며, 이미 클라우드 서비스를 부분적으로 도입해서 사용중인 기업도 상당수 존재하고 있습니다. 

그럼 오픈소스는 클라우드 컴퓨팅의 어디에 사용되고 있을까요?

클라우드 서비스를 구축하기 위한 구축비용을 최소화 할 수 있는 유일한 대안은 오픈소스이며, 이미 다양한 분야에서 오픈소스 기술들이 적용되고 있습니다. 해외의 경우 클라우드 컴퓨팅 서비스 모델에 따라서 구분해보면 다음과 같이 적용되어 있습니다.

SaaS(Software as a Service)
구글앱스 
RedHat Jboss Application Server, Apache Geronimo, IBM WebSphere 등

PaaS(Platform as a Service)
구글앱엔진(GAE)이 대표적입니다. 구글앱엔진은 Python 애플리케이션을 위한 툴을 제공
구글 쿼리 랭귀지(GQL)를 사용해 지속적으로 데이터를 저장하고 관리하기 위한 Python API를 제공.

IaaS(Infrastructure as a Service) 
상업적으로 가장 잘 알려진 아마존 EC2는 특별한 가상화머신(OS와 애플리케이션 조합)을 지정할 수 있으며 이 가상화 머신 상에서 애플리케이션을 개발할 수 있습니다. 유칼립투스(Eucalyptus)는 아마존 EC2를 오픈소스로 실행한 것이며, EC2와 유칼립투스는 OS가상화를 위해 젠(Xen)과 함께 리눅스에 의존하고 있습니다.



아래 자료는 저희 회사의 직원들에게 클라우드 컴퓨팅이란 무엇인지 설명하기 위한 목적으로 작성된 자료입니다.







이건 예전 프로젝트 수행 시에 만들어졌던 동영상인데.
공개SW의 이해를 돕는 좋은 내용이라서 게시합니다.

광주시에서 공개SW 홍보의 목적으로 만들어진 동영상입니다.
한번쯤 보셔도 좋습니다. ~


음..저작권에 문제되시면 연락주세요.


PC 정리중에 발견한 오픈소스의 이해를 돕는 자료 "Revolution OS" 입니다.
이전에 상영회도 몇번 있었던 자료라서 보신분이 많을지도 모르지만,
이제껏 이자료처럼 정확하게 오픈소스와 리눅스에 대해서 이야기하는 자료는 없었던것 같네요.


리눅스란 무엇인가?
오픈소스란 무엇인가?
오픈소스는 공짜인가?
어떻게 비지니스해야하나?
이런 고민들에 대하여 한번 더 생각 해보게 만드는 자료입니다.

한글자막 입혀서 변환했습니다. 꼭 보시길 추천드립니다.(85분이라 좀 길긴 하죠^^)






이번에 생각을 정리해 볼 기회가 있어서 쓴 내용인데
이 자료는 오픈소스에 대한 이해가 필요할 때 도움이 될꺼 같습니다.

해외에는 오픈소스제품이 많고 실제로 활발한 활동들이 일어나는데, 우리나라에서는 오픈소스가 힘을 쓰지 못하는 듯 보입니다. (많지는 않지만 열심히 하고있는 국내기업이나 프로젝트도 있습니다.)

오픈소스의 생태계 구성이 어떤지 한번 살펴보고, 국내에서 어떻게 해야할지 생각해 보았습니다.



IDC의 조사에 따르면 전 세계 공개SW 생태계는개발자 중심의 공개SW 프로젝트가 주도하는 시장구도를 형성하고 있으며,
이 생태계에 많은 기업들이 다양한 방식으로 참여하여(redhat, suse 등)
이러한 프로젝트형 개발 구도에 참여하여 자체 소프트웨어 경쟁력 향상에 주력하고 있는 반면,
국내의 공개SW 생태계는 대부분 소규모의 프로젝트와 공개SW 벤더들이 주도하는 시장구조를 가지고 있습니다.

Open Source Software Ecosystem 의 비교



우리나라가 공개SW 시장에서 자생력 있는 생태계를 형성하기 위해서는
공개SW프로젝트를 주도하는 세력(즉 공개SW 개발자 커뮤니티가 되겠죠)을 역량을 강화 할 필요가 있습니다.
그러기 위해서는 전세계 공개SW 생태계의 구심점이 되어있는 커뮤니티들에 대한 분석 후 국내의 커뮤니티에 활성화에
부족한 부분을 강화해야 할 것입니다.

민간 순수 커뮤니티들은 기업과 연계해서 취업 또는 판매, 기술이전 등의 기회를 넓히도록 힘써야 하며
공공차원에서는 단순히 관련과제를 선정해서 지원하는 기존의 활성화 지원보다는
국내의 공개SW 관련 커뮤니티에 대한 직접조사를 실시한 후,
현실적인 애로사항을 수집해서 해결해 나가는 것이 필요하다고 생각합니다.




관련 링크
http://www.idc.com/prodserv/maps/opensource.jsp
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.1319
http://linux-foundation.org/weblogs/press/2010/04/12/meego-developer-community-grows-as-software-ecosystem-support-broadens/
http://ifap-is-observatory.ittk.hu/node/281
http://www.slideshare.net/55thinking/understand-open-source-ecosystems
http://www.umass.edu/digitalcenter/research/working_papers/09_002SchweikEcosystem.pdf


CMS(Content Management System)이란,
웹사이트 구축에 필요한 웹기획자, 개발자, 디자이너의 3가지 역할 중
개발자와 디자이너의 영역을 처리해주는 SW분류를 의미합니다.
따라서 웹기획자가 의도한대로 유연하게 조정할 수 있는지, 손쉬운 관리가 가능한지 등이 중요한 검토항목이 됩니다.

CMS 주요 검토항목
네비게이션(메뉴) 관리 - 어느정도 depth의 네비게이션을 관리할 수 있는가, 관리기능은 세밀한 조정이 가능한가
콘텐츠 관리 - 작성가능한 콘텐츠의 종류는 다양한가, 모듈(컴포넌트)는 다양하게 존재하는가
스킨(테마) 관리 - 다양한 스킨이 제공되는가, 스킨은 손쉬운 편집이 가능한가
인증 - 컨텐츠 권한, 사용자 권한에 대한 세밀한 조정이 가능한가
사용자 정의 필드 - 개발자없이 원하는 필드를 추가, 삭제 할 수 있는가
사용자 정의 콘텐츠 - 개발자 없이 콘텐츠의 새로운 유형을 생성할 수 있는가
관리자 인터페이스 - 관리자에게 쉬운 인터페이스를 제공하는가

개발자라면 누구나 한번쯤 떠올려보는 SW지만, 쉬운관리와 세밀한 조정을 동시에 제공하기란 쉬운 일이 아닙니다.
CMS는 국내에서 Xe가 활발하게 사용되고 있으며, 해외에서 Drupal, Joomla 등이 활발하게 사용되고 있습니다.
이번시간에는 drupal 을 사용해서 웹사이트를 구축하는 방법을 진행해 보겠습니다.


제가 설치하는 시점에서는 6.17버전이 안정화 버전이라서 그걸 다운로드 받았습니다.
다운받은 파일을 설치할 경로에 압축해제 하시고,
http://설치도메인/install.php 를 브라우저로 호출하시면 설치단계가 시작됩니다.

저희 서버에는 modsecurity가 적용되어 있어서, 설치과정에 오류가 나네요~
구글링 해보니, Modsecurity 적용된 환경에서 Drupal 설치를 하려면
modsecurity 룰셋을 변경해 주어야 정상적으로 설치됩니다.
(Drupal 6.x, ModSecurity2 환경)

vi /etc/httpd/modsecurity.d/modsecurity_localrules.conf

# drupal setting
<LocationMatch "/">
SecRuleRemoveById 960010
SecRuleRemoveById 960015
SecRuleRemoveById 960032
SecRuleRemoveById 950107
</LocationMatch>

# drupal setting
<LocationMatch "/install.php">
  SecRuleRemoveById 970003
  SecRuleRemoveById 960010
</LocationMatch>
추가사항
드루팔의 관리자화면을 정상사용 하기 위해서
vi /etc/httpd/modsecurity.d/base_rules/modsecurity_crs_41_phpids_filters.conf
66번줄의 content 를 제거해 주었다.

다른 SW를 위한 modsecurity 설정은 아래를 참고하세요.

vi /etc/httpd/modsecurity.d/modsecurity_localrules.conf

더보기


설치과정에서 오류를 만나신다면, 드루팔 퀵 설치 가이드( http://drupal.org/node/570116)를 보시면서 진행해 보시기 바랍니다.

Drupal 설치 전 설정을 저장할 파일과 디렉토리 권한을 조정해 줍니다
[hckim@www html]$ cp sites/default/default.settings.php sites/default/settings.php
[hckim@www html]$ chmod a+w sites/default/settings.php
[hckim@www html]$ chmod a+w sites/default

Drupal 설치 후 조정했던 권한을 변경해서 보안상 취약점을 제거합니다.
[hckim@www html]$ chmod a-w sites/default
[hckim@www html]$ chmod a-w sites/default/settings.php

기본 설치는 여기에서 끝났습니다.
설치 화면을 보시고 뭔가 마음에 안드시겠죠. 영어로된 화면하며, 복잡한 기능들..
차근차근 입맛에 맞게 설정해 가시다 보면, drupal의 유연한 기능에 놀라시게 될겁니다.

한글화

영어로 된 인터페이스를 우선 한글화 해 보겠습니다.
http://drupal.kldp.net/download/latest_ko_language_package
위 주소에서 한글화파일(6.15  - drupal-6.15-ko.20100222po.po)를 다운로드 받습니다.

한글로 drupal을 사용하시기 위해서는 locale 모듈을 활성화하시고, 다운로드 받은 po파일을 Korean이란 항목에 import하시면 됩니다.

추가 모듈 설치
http://drupal.org/project/Modules
원하는 모듈을 다운로드해서 압축을 해제한 후 "drupal설치된 경로/modules" 안에 업로드 하세요

추가 테마 설치
http://drupal.org/project/Themes
원하는 테마를 다운로드해서 압축을 해제한 후 "drupal설치된 경로/theme" 안에 업로드 하세요

위지윅 편집기로 콘텐츠 작성을 위한 추가설치
rupal에서 사용가능한 WysiWyg 편집기는 종류가 매우 많습니다.
(htmlarea, fckeditor, ckeditor, yui editor 등)
설치하는 방법은 모듈로 설치하는 법과, wysiwyg 모듈안의 에디터코어를 추가하는 방법이 있는데
저는 모듈로 ckeditor를 설치하는 방법을 선택했습니다.

파일업로드를 위해서는 ckfinder도 추가로 설치해야 합니다.
그중 ckeditor를 적용하는 방법에 대한 아래 글을 참고해서 적용했습니다.
http://www.brightwebsitedesign.com/how-to-install-ckeditor-and-ckfinder
http://yadadrop.com/drupal-video/ckfinder-file-browser-ckeditor-drupal



몇일 전 Jboss 세미나에서 몇년전 고민했던 내용이 나와서 다시 정리해봅니다.
(모두 개발하시는 분들이 참석해서 분위기는 좋았던것으로 기억됩니다)

오픈소스를 도입 후 현재 5년간 사용하고 있는 회사의 입장에서 오픈소스 도입 시 고려사항을 이야기하더군요
전에 하던 업무에서 이부분에 대해서 고민했던 적이 있었습니다.
기억이 나서 다시한번 정리해 봅니다.


외국의 경우 2007년에 발표된 오픈소스 카달로그라는 자료가 있어서
그걸 번역해서 홍보하기도 했었습니다.(한글본은 제 컴에서 검색이 안되네요)



이 문서의 주요골자는 오픈소스 도입 시 고려사항을 아래의 7개항목으로 선정하고
이 제품들에 대한 카달로그를 생성한 것이죠.


<도입 시 고려사항>



<오픈소스의 적용영역>

제 자료를 찾아보니
2008년12월에 작성했던 공개소프트웨어 정보화전략계획수립 가이드에 아래의 내용이 있네요.

이 문서의 내용은 오픈소스기반의 ISP사업을 위한 가이드입니다.



'오픈소스SW' 카테고리의 다른 글

공개SW CMS Drupal  (0) 2010.07.24
MySQL Transaction  (0) 2010.07.14
공개SW - 오픈소스 도입시 고려사항  (0) 2010.07.13
firefox 확장기능 Wired-Marker  (0) 2010.06.30
yui-compressor  (0) 2010.06.29
php 어플리케이션 로그 - log4php  (0) 2010.06.29

어제 미팅이 있어서 이야기하던 중 이런 질문이 나왔습니다.

공개SW는 공짜다라는데 어떻게 이야기해야 하느냐?

정답부터 말하자면 오픈소스가 공짜인 기업도 있고, 그렇지 않은 기업도 있습니다.

이 문제는 비용의 관점을 어떻게 보느냐에 따라서 달라지는 것이 아닐까요

만일 오픈소스기반의 개발방법론이 정착된 환경의 기업이라면, 공짜입니다.
이런 경우라면 오픈소스라이선스에 대한 검토가 있을것이고,
참여과 기여를 통한 SW의 질적향상에 대한 경험, 오픈소스의 자유로운 배포정신 등을 이해하고 있을테니까.
좋은 SW를 무료로 사용하면서 비지니스를 창출할 수 있습니다.
자신이 좋은SW들을 패키징해서 제품으로 판매할 수도 있고(redhat, suse 등), IT서비스를 컨설팅할 수도 있으며(openlogic), 다른 IT서비스 카테고리를 선택할 수도 있고(blackduck), 하드웨어와 접목한 융합기기를 만들어 낼 수도 있습니다(embeded).

하지만, 오픈소스에 대한 이해와 학습이 없는 기업이라면 공짜가 아닙니다.
SW구매이후 발생될 여러가지 비용을 포함해야 하는 기업환경에서
소스코드의 자유로운 배포를 기본으로 하며(gpl,lgpl,mpl,bsd등), 적합한 라이센스를 검토해야 하고,
해당 SW에대한 기술지식, SW에 대한 유지보수 능력등이 필요한 오픈소스 SW를 공짜라고 판단하는것은  잘못된 생각입니다..

공개SW를 사용해야 할까요?

기업의  CTO가 오픈소스철학을 이해하고 있다는걸 전제한다면, 오픈소스는 기업의 EA에 많은 이익을 가져다 준다.
수 많은 SW의 리펙토링이 가능하고, 글로벌에 적용되는 SW개발방법론을 기업의 인적자원에게 숙련시킬수도 있으며
다양한 SW를 통해서 창의적인 아이디어를 획득할 기회도 증가합니다.

참여와 공유를 통해서 집단지성이 제공되는 최근의 흐름을 생각해볼때,
세상이 스마트해지면 해 질수록 오픈소스에 대한 이해는 더욱 필요합니다.






+ Recent posts