네트워크타임지 기고문 2020.12.03
우리는 무엇이 문제인가?
현업의 빠른 요구사항 구현, 기술변화 대응을 위하여 Agile 이 정착되고 있으며, IT 개발환경은 Cloud, CI/CD, DevOps 로 급속히 변화되고 있다.
S/W개발의 환경적인 요인은 기술 요인, 기업 내부 요인, 외부 요인으로 나눌 수 있다.
우선 기술 요인을 살펴보면, 개발 참여 인력의 skill을 사전에 검증하기 어려우며, 구현 기술에 대한 검증 프로세스가 미흡하다.
기업 내부 요인으로는 유지보수 시 사후관리 미흡, S/W 품질관리 인력과 품질 솔루션 체계화 부족, 소스코드 품질점검 부재, 외부업체 아웃소싱 의존도가 증가되고 있다.
외부 요인 또한 IT기술 인력 수급 부족, 주 52시간제 도입, 언택트 상황으로 프로젝트 비용과 기간이 증가되고 있다.
S/W 개발 리스크가 상기 요인으로 인하여 급속히 증가되기 때문에, 성공적인 프로젝트 수행을 위하여 새로운 개발 방법으로의 변화가 요구되고 있다.
금융IT는 물리적 망분리, 강한 보안규칙 준수, 인터넷환경 접근 제약으로 오픈소스 활용, SaaS (Software as a Service), 신기술 적용에 제약이 많으며, 개발 생산성을 높이기 위한 다양한 도구 적용이 어렵다.
선진 IT기업의 S/W전체 개발과정 (Software Development Life Cycle)에 사용되는 다양한 도구와 품질관리 기법 및 프로세스를 금융IT 환경에 적용할 필요성이 증가하고 있다.
금융IT환경에 맞추어, 다양한 네트워크 환경(개발망,운영망,폐쇄망)과 다양한 플랫폼(윈도우즈, 리눅스, 유닉스등)에서 즉시 사용할 수 있는 표준화되고 자동화된 협업 및 개발 도구를 소개하겠다.
이러한 도구와 프로세스의 적용으로 S/W품질과 개발 생산성을 획기적으로 높일것으로 기대한다.
생산성 향상을 위한 개발 도구의 핵심에는 오픈소스가 있다.
오픈소스는 누구나 무료로 이용할 수 있고 공개된 코드를 기반으로 변경이 가능하다.
또한 수 많은 레퍼런스가 있으며, 지속적으로 버젼업되어 안정성과 신뢰도가 높다.
리눅스(Linux), 아파치, 톰캣, MariaDB 등 전 산업분야에 널리 적용되고 있음은 익히 알려진 사실이다. 폐쇄성이라는 특징을 가진 애플의 스티브잡스 강연에서 했던말 "Open Source We think it's great!"에서도 알수 있듯이, 애플은 크고 작은 다양한 오픈소스 기술에 관여하고 개발해 왔다.
또한 금융IT에서도 비용절감과 새로운 트렌드를 받아들이기 위해 오픈소스기반의 시스템에 많은 관심을 가지고 있다. 그러나 오픈소스 도입은 다양한 개발 언어와 frontend, backend, 아키텍처 등 많은 지식이 필요하다.
오픈소스는 스스로 관련 기술을 배우고 적용해야 하기 때문에, 문제 발생시 해결에 어려움을 겪고 있으며, 관련 전문가 부족으로 많은 한계점을 내포하고 있다. 이러한 허들을 넘기 위해서는 지속적인 관심과 노력으로 오픈소스 기술 역량을 향상시켜야 한다.
허들 경기를 시작하다.
신한DS는 Off Line 및 폐쇄망 환경에서도 자유롭게 설치, 실행 가능한 검증된 오픈소스 도입이라는 “기본원칙”으로 다양한 시도를 진행해 왔다.
다방면의 검증을 통해 필요 오픈소스 솔루션을 하나씩 도입하고, 통합하는 과정을 소개하겠다.
유사한 고민을 하는 독자들에게 타산지석이 되기를 희망한다.
SDLC(Software Development Life Cycle) 전 과정에 필요한 도구를 검토하기 시작하였으며, 그 중에서 조직內 지식의 축적 및 활용이 가장 우선적으로 구축되어야 한다고 생각했다. 위키 방식의 지식관리 도구로 안정성과 확장성이 뛰어난 Xwiki를 우선 구축하였으며, 전체 프로젝트 관리를 위하여 이슈트래커 기반의 Redmine를 선정하여 구축하였다. 사용자 편의성을 위해 Xwiki와 Redmine의 통합로그인이 필요하였으며, 향후 추가되는 다양한 도구들도 사용자ID와 권한관리등이 통합되어야 하기 때문에, SSO(Single Sign On) 솔루션으로 KeyCloak 을 적용하였다. 금융IT에 새로운 S/W를 적용하기 위해서는 모의해킹, 소스코드 진단등의 보안성 검토가 필요하며, 이를 만족하기 위하여 오픈소스의 이해 및 커스터마이징을 수행하였다.
오픈소스 커스터마이징 작업에는 공통적인 허들이 존재한다. 한글화 과정과 방대한 오픈소스의 이해 및 수정이다. 수천줄의 한글 번역, 전체 소스코드를 파악하고 개선이 필요한 부분에 대한 수정을 한 후 반복적인 테스트가 수반되어야 하기에 오픈소스의 수정은 많은 수고와 노력이 필요하다.
즉 오픈소스의 도입은 전체 아키텍쳐를 파악하고 한글화 작업을 진행, 개선사항을 어떻게 수정 하는지에 따라 사용이 불편한 오픈소스에서 사용자 친화적인 시스템으로 거듭날 수 있다.
넘지못할 허들은 없다.
대다수 프로젝트들이 다양한 기술기반, 구축 기간이 짧은 프로젝트로 변화하는 시점이기에, 당사에서는 이를 지원하기 위해 수행단계시 마다 필요한 S/W 개발지원도구를 선별, 검증하여 구축하는 작업을 진행하였다.
선정 및 구축 프로세스는 오픈소스 후보군 선정 -> 외부 평가 및 업데이트의 지속성 -> pilot 환경 구축(컨테이너 기반) -> 사용방법에 대한 이해 -> 당사에 맞춘 Customizing -> 문서화 순으로 진행하였고,
소스코드 품질을 위한 정적분석 도구, 단위 테스트 도구, 테스트 자동화 도구, 성능테스트 도구등 그 외 다양한 S/W개발도구에 대해 하나씩 검증하는 프로세스를 진행하였다.
검증 프로세스에서 가장 중요한 단계는 후보군에 대한 선정이다. 후보군을 잘못 선정하면 그후 프로세스들이 잘못된 방향으로 흘러가기 때문에 후보군 선정에 많은 힘을 기울여야 한다.
당사에서도 적용대상 분야별 후보 목록을 리스트로 정리하고, 그 중에서 토의를 거쳐 후보군을 선정하였다. 후보군은 최대 3개 이내로 선정하여 빠른 진척이 가능하도록 하였다.
대표적용사례) 정적분석도구
Project 품질검점(QA)활동은 대다수 산출물(Document) 위주로 이루어져 있으므로, 개발/테스트 단계의 소스코드 품질 점검이 미흡하다. 또한 협력업체 개발인력 비중이 높아짐에 따라, S/W코드 품질 중요성이 높아지고 있고, S/W코드 품질 리뷰 활동이 적절히 수행되지 않아 테스트단계 결함 율이 높으며, 유지보수에 어려움을 겪고있다.
해결책으로 정적 분석 도구를 도입하여 S/W 품질점검 자동화, 정량적 품질관리, 개발 인력별 S/W 품질 모니터링, 품질 대시보드를 이용하여 고품질의 S/W를 고객사에 제공할 수 있다. 정적 분석은 소스 점검 Rule을 정해야 하며, 다양한 프로젝트에 적용해서 주기적으로 정적분석 결과를 통합/축적/분석하는 것이 중요하다. 축적/분석된 결과를 기반으로 소스코드 품질 변화를 중앙에서 모니터링 하고, 개발 표준 업그레이드 및 새로운 개발 도구 및 방법의 적용 전/후 비교를 통한 효과 검증등이 가능하여, 소스코드 품질관리를 통한 고객과의 신뢰구축에 중요한 도구라고 할 수 있다.
대표적용사례) 테스트지원도구
'개발자의판단'에 근거한 단위 테스트 진행 시 많은 문제점을 만들어 낸다.
이런 문제를 제거하기 위해 여러가지 기법들이 그 가치를 인정받았는데 그중 하나가 테스트를 개발의 전면에 내세운 TDD(Test Driven Development,테스트 주도 개발)이다.
'프로그램을 작성하기 전에 테스트를 먼저 작성하는 것' 이라고 테스트 주도 개발을 정의한다. 코드를 검증하는 테스트 코드를 먼저 만든 다음에 실제 작성해야 하는 프로그램 코드 작성에 들어가라는 뜻이다. 우리가 TDD라는 방식을 통해 얻고자 하는 최종 목적은 '잘 동작하는 깔끔한 코드‘ 이다. 다만 TDD에선 정상적으로 동작하는 코드만을 개발의 목표로 삼지 않고, 작성된 코드도 명확한 의미를 전달할 수 있게 작성돼야 한다고 말한다.
즉, '제대로 동작함(works)‘ 뿐 아니라 '깔끔함 (clean)‘ 까지도 동등한 수준의 개발 목표로 삼는다는 점이 일반적인 개발 방식과 다르다. 2019년 개발자 5,000여명을 대상으로 조사한 Programmers Report (https://programmers.co.kr )에 의하면, 아직 국내 적용이 미미한 수준이다.
TDD 확산이 부족한 주요 원인은 높은 진입장벽, 시간과 비용의 증가이다.
TDD 적용 도구로 Junit, Mockito 등의 다양한 오픈소스가 개발도구의 플러그인 형태로 존재한다.
Junit, Mockito등 도구에 익숙하지 않은 개발자들은 적응이 어려울 수 있어, TDD로의 전환을 위한 가교 역할 도구가 필요하다고 생각하였다. 처음 TDD에 접근하는 개발자도 즉시 적응할 수 있는 Test Case 자동 생성 도구를 별도 개발하였다. 이 도구를 시작으로 개발 문화의 변화를 이끌어 낼 수 있는 마중물이 되기를 기대한다.
Test Case의 반복적인 사용 및 개발 소스에 대한 테스트 커버리지는 개발단계에 가장 중요한 부분이다.
최소 테스트 커버리지는 70% 이상을 기준으로 점검하는 것이 보통이다. 실제 운영에서 충분한 테스트의 부족으로 많은 오류를 발생 시켜왔다. 테스트 커버리지는 개별 프로그램 단위, 개발자 단위, 업무 단위등 다양한 정량적 품질지표가 된다. 테스트 커버리지(동적 분석)와 정적 분석에서 추출된 지표를 통합하여 대시보드로 모니터링이 가능하며, 주기적인 검증으로 통합 테스트 단계의 시간과 비용을 획기적으로 줄일 수 있다.
결승점이 다가온다.
여러 개발도구를 적용하면서 문제점은 사용자가 사용하기 어렵다는 것이다.
또한 익숙한 기존 개발 환경을 바꾸기 어려우며, 개발 도구별 front-backend 기술과 사용 방법이 다르기 때문에 진입장벽이 존재한다. 그래서 다양한 SDLC도구를 기존 개발도구와 통합할 수 있는 방법을 고민했다.
기존 프로젝트에서 발견된 문제점을 분석하였고, 수 많은 도구가 결합된 통합 실행화면(Canvas)을 제공하여 사용성을 대폭 개선 하였다. 또한 개발자를 위해 개발환경(IDE)에 플러그인 형태로 통합 실행 기능을 제공한다.
서버환경은 Customizing된 오픈소스기반 개발도구를 docker 이미지로 통합 하였으며, 이는 다양한 플랫폼(리눅스, 유닉스, PC, Mac등)에 즉시 적용할 수 있도록 하였다.
이렇게 오픈소스 적용 “기본원칙”을 기준으로 필요한 S/W개발도구를 한 개씩 적용하여 실제 프로젝트에 적용하고 있으며, 피드백을 통하여 지속적인 업그레이드를 수행하고 있다. 프로젝트 현장의 프로세스, 일하는 방식, 수작업 요소, 사용 도구등을 면밀히 관찰하여, 개발 방식의 디지털화에 매진하고자 한다.
미래를 위한 대비
신한DS는 프로젝트 수행 시 즉시 적용가능하고 필수적인 S/W 개발도구를 적용한 All-in-One형태의
개발통합지원도구(ShinhanDS Development ToolKit)를 제공하여, 정량화된 품질지표의 통합관리,
코드 품질지표 측정 자동화, 테스트 커버리지 측정, 프로젝트 통합 관리등 프로젝트의 현재 상황을 정량적으로 측정하여 빠른 문제해결 및 체계적인 검증이 가능하게 되었다.
신한금융그룹에서 수행하는 프로젝트에 부분적으로 적용하고 있으며, 그룹외 대형 프로젝트로 적용을 확대해 가고 있다.
앞으로도 CI/CD, DevOps, 클라우드 환경이 가속화 되는 상황에서 신한DS 방법론과 조화를 이루고
프로젝트의 성공적인 방향으로 이끌고자, 검증된 오픈소스기반의 다양한 S/W개발도구를 적극적으로 수집,
검증하여 도입하고, 지속적인 적용 및 구축할 예정이다.
또한 커스터마이징된 오픈소스들을 컨테이너로 관리하는 것 뿐만 아니라 안정적인 사용을 위해 오픈소스 기반의
오케스트레이션 서비스를 적용하여 private/public 클라우드 환경에서도 안정적인 운영이 가능할 수 있도록
변화하는 환경에 발 빠른 대비를 하고자 한다.
앞으로도 정량적인 S/W 개발, 상호 소통 및 협업, 품질 좋은 소프트웨어, 고객과의 협력, 변화의 대응에 큰 가치를 두고 S/W 생산성을 높이는데 주력 할 예정이다.
'IT세미나자료' 카테고리의 다른 글
제주지니 앱 프로젝트 (0) | 2022.12.16 |
---|---|
기능점수(Funtion Point) (0) | 2022.09.18 |
Spring Cloud (0) | 2022.09.18 |
클라우드, 서버, 프론트 기술트랜드 (0) | 2022.09.18 |
2019 AWS Seoul Summit- 신한금융지주 발표사례 (0) | 2019.06.24 |