핫스팟 시마네: 루비 업무 시스템 확산 현황시마네현은 루비 언어 창시자인 마츠모토 유키히로(Matsumoto-san)의 고향이라는 이점을 활용하여 루비 온 레일즈 개발의 중심지로 성장했습니다. 지방 정부의 적극적인 지원과 언론의 관심 덕분에 루비는 시민들에게도 널리 알려졌습니다. 2007년 IPA(정보처리추진기구) 실증 사업으로 마츠에 시와 협력하여 개발된 ‘의료·개호 공학 가산 시스템’은 배치 처리를 포함한 핵심 업무 전반에 루비를 사용한 일본 최초의 사례로, 약 50명의 개발자가 참여하여 성공적으로 완료되었습니다. 이후 시마네현은 소규모 개발 사례를 확대하고, 행정 주도의 루비 교육 과정을 개설했으며, 2009년부터는 루비 개발에 대한 보조금을 지원하는 등 산업 진흥을 위한 노력을 지속하고 있습니다. 현재 시마네현의 SI 기업들은 신규 업무 및 기존 시스템 웹화에 루비를 기본으로 채택하고 있으며, 지방자치단체의 시스템 조달에서도 루비 사용에 가점을 부여하는 등 루비 도입이 가속화되고 있습니다.
업무 시스템 개발을 위한 루비 온 레일즈 기본 패턴발표자는 엔터프라이즈 시스템 개발 시 루비 온 레일즈의 기본 패턴을 다음과 같이 제시합니다.
- 대량 데이터 응답: 액티브 레코드(ActiveRecord)의 블랙박스 특성을 고려하여, 응답 속도 향상을 위해 SQL 직접 작성을 적극 활용합니다.
- 유지보수성: 10~20년간 운영되는 업무 시스템의 특성을 고려하여 코딩 규약 준수, 소스 리뷰, DB 항목명에 일본어 사용 등을 통해 가독성과 기술 계승을 용이하게 합니다.
- 지원: 안정적인 시스템 운영을 위해 디스트리뷰터 역할을 수행하는 전문 기관(네트워크 응용통신연구소)의 지원이 필수적입니다.
- 배치 처리: 업무 시스템에 필수적인 배치 처리 역시 레일즈를 활용하여 온라인 및 배치 개발의 공통화 및 부품 공통화를 실현합니다.
- 개발 방식: 객체 지향 언어임에도 불구하고, 업무 시스템 개발에는 구조화 설계(업무 흐름, 화면 전환 설계)를 통해 고객과의 요구사항 일치를 확인하는 것이 중요합니다. 레일즈의 MVC 구조에서는 컨트롤러에 업무 로직을 집중시키는 방식을 채택합니다. 이는 메인프레임 및 클라이언트-서버 시스템의 3계층 개발 구조와 유사하여 업무 처리에 집중할 수 있는 효율적인 구조로 평가됩니다.
- 프로젝트 관리 및 개발 도구: Redmine을 통한 안건 관리(기능 추가, 버그), Subversion을 통한 소스 관리, Redmine과의 연계를 통해 누락을 방지합니다.
- 보고서(Report) 처리: 대량 보고서 출력 및 스풀 기능이 필수적이며, JasperReports, iReport 등 기존 도구와 함께 자체 개발한 ‘Shin Reports’를 활용합니다.
코볼 엔지니어의 부활과 젊은 루비 엔지니어 육성웹 애플리케이션 시대로 접어들면서 40~50대 코볼 엔지니어들이 개발 현장에서 멀어졌지만, 그들은 풍부한 비즈니스 스킬을 보유하고 있습니다. 발표자는 이들 베테랑 엔지니어와 젊은 루비 엔지니어를 효과적으로 융합하는 전략을 제안합니다.
- 베테랑 엔지니어 참여 환경: SQL 직접 작성, 일본어 DB 항목명, 워터폴 개발 방식, 배치 처리의 동일 언어 사용, 구조화 설계, 메인프레임과 유사한 온라인 구조 등을 통해 베테랑 엔지니어들이 설계 단계에서 기존 노하우를 활용할 수 있도록 지원합니다. 테크노 프로젝트에서는 코볼 엔지니어를 위한 루비 온 레일즈 교육(시퀀셜 파일 처리, DB 검색, 보고서 출력 등 코볼의 기본 교육을 레일즈로 재현)을 진행하고 있습니다.
- 설계 중시: 업무 노하우와 고객과의 커뮤니케이션, 스마트한 데이터베이스 설계(복잡한 업무를 단순한 로직으로 처리), 풍부한 경험(입력/처리 오류 예상, 대량 데이터 처리)을 통해 시스템 품질을 확보합니다.
- 젊은 루비 엔지니어 육성: 단기 개발 환경에서 업무 노하우 습득의 어려움을 해결하기 위해 베테랑 SE와 젊은 엔지니어의 융합을 통한 업무 노하우 전수가 중요합니다. 이는 업계의 암묵지, 전문 용어 이해, 에러 처리 방식 등을 포함합니다. 테스트 주도 개발(TDD)을 통해 고객 요구사항을 만족하는 시스템을 구축하고 품질을 확보하는 것도 강조됩니다.