보편적인 소프트웨어 개발자에게 코볼(Common Business Oriented Language, COBOL)에 대해 물으면 마치 먹지나 유연 휘발유, 분당 회전수 78짜리 레코드 판에 대해 묻기라도 한 듯한 표정으로 쳐다본다. 고(Go)나 파이썬(Python) 같은 현대 언어는 물론 파스칼(Pascal), 심지어 C에 비해서도 코볼은 장황하고 투박하고 시대에 뒤떨어져 보인다.
그러나 코볼의 생명력은 질기다. 코볼은 도태된 기술로 사라지지 않고 굳건히 자리를 지켰다. 세계 곳곳에서 여전히 방대한 코볼 코드베이스가 사용되고, 이 가운데 상당수는 처음에 만들어진 그대로 전혀 변경 없이 실행되고 있다. 영화에 비유하면 개봉 후 오랜 시간이 지난 후에도 좀처럼 극장에서 내려가지 않는 영화와 같다.
결론은 코볼은 건재하다는 것이다. 미국 뉴저지를 포함한 여러 주에서 코볼 애플리케이션을 현대화하는 작업을 이끌 프로그래머 채용 공고를 내면서 최근 코볼에 대한 관심이 되살아나고 있다.
이번 기사에서는 코볼의 기원, 지금까지도 돋보이는 코볼의 설계 특성, 그리고 끈질긴 수명의 원동력이지만 다루기 어려운 이유이기도 한 부분들을 살펴본다.
컴퓨터의 역사와 함께 한 코볼
코볼은 1950년대 후반부터 1960년대 초반 사이에 만들어졌다. 코볼 개발 프로젝트는 미국방성(DoD)의 후원으로 진행됐으며 IBM, 하니웰(Honeywell), 스페리 랜드(Sperry Rand), 버로우(Burroughs)와 같은 기업이 컨소시엄으로 참여했다. 목표는 다음과 같은 특성을 가진 프로그래밍 언어를 만드는 것이었다.- 하드웨어 세대와 하드웨어 제조업체 간의 용이한 소프트웨어 마이그레이션을 위한 컴퓨터 시스템 간의 이식성(Portability)
- 작업 속도 측면에서 손해를 보더라도 더 광범위한 프로그래밍 참여를 촉진하기 위해 당시 다른 언어(포트란 등)에 비해 더 영어에 가까운 구문
- 미래의 변화를 수용할 수 있는 기능
첫 번째 공식 코볼 사양은 1960년에 나왔다. 코볼에 비판적이었던 사람들에겐 실망스럽게도 이후 10년에 걸쳐 코볼은 비즈니스 애플리케이션 개발의 기본 언어로 부상했다. 코볼이 빠르게 확산한 이유 중 하나는 네트워크 효과다. 코볼의 첫 협력업체 가운데 하나인 IBM이 적극적으로 조기 도입에 나선 것이 기폭제가 됐다. 당시 컴퓨팅 업계에서 IBM의 위상이 지배적이었기 때문이다.
코볼은 특정 시스템에 사용하기 위해 만들어진 언어지만 설계상의 이점과 업계의 든든한 후원 덕분에 해당 시스템이 사라진 이후까지, 훨씬 더 오랜 기간 살아남았다. 자료에 따르면 코볼은 1970년에 세계에서 가장 많이 사용되는 언어가 됐다. 1997년에는 비즈니스 앱의 약 80%가 코볼로 실행될 정도였다.
코볼 언어
코볼 설계자들은 당시 포트란과 같은 다른 프로그래밍 언어의 간결한 구문을 버렸다. 이들이 설계 시 염두에 둔 개념은 프로그래머가 아닌 사람들, 특히 회계, 금융, 보험 및 기타 비즈니스 전문가가 읽고 이해할 수 있는 프로그래밍 언어를 만드는 것이었다.코볼의 초기 구문으로 작성된 다음과 같은 “hello world” 프로그램을 살펴보자.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello World!'.
END-DISPLAY.
STOP RUN.
파이썬과 같은 간결한 언어를 먹고 자란 현대 소프트웨어 개발자가 보기에 장황한 코드다. 그러나 코볼이 가진 장황함의 기원은 파이썬과 같은 현대 언어에 영향을 미친 개념과 동일하다. 코드는 쓰는 횟수보다 읽는 횟수가 훨씬 더 많으므로 읽기 편하도록 써야 한다는 개념이다.
코볼의 더 현대적 버전으로 쓴다면 다음과 같은 형태가 된다.
program-id. hello.
procedure division.
display "Hello world!".
stop run.
이 예제가 더 간결하지만 각 단계에서 어떤 일이 일어나는지를 명확히 드러내기 위해 노력한다는 기본 원칙은 동일하다.
코볼에는 구문 및 프로그램의 내부 구성과 관련된 엄격한 규칙이 있다. 코볼 프로그램은 다음과 같은 세션, 또는 디비전으로 명확하게 나뉘기 때문에 한눈에 각 구성요소를 쉽게 찾고 이해할 수 있다.
- 식별 디비전: 기본적으로 메타데이터 세션으로, 프로그램과 작성자 등에 대한 세부 정보를 포함한다.
- 환경 디비전: 외부 장치의 별칭과 같이 다른 하드웨어에서 프로그램을 실행할 때 편집이 필요할 수 있는 런타임 환경에 대한 세부 정보를 포함한다. 예를 들어 I/O 처리 방식이 상호 전혀 다른 시스템 간의 프로그램 이식성에 도움이 된다.
- 데이터 디비전: 파일과 작업 스토리지 세션을 포함한다. 데이터 디비전은 프로그램에 사용되는 파일과 변수(각각)를 기술한다.
- 프로시저 디비전: 실제 프로그램 코드가 위치하는 곳으로 논리적 단위인 세션, 패러그래프, 문장, 문으로 나뉜다. 이 구조는 유사한 기능을 수행하는 모듈이나 함수와 비슷해 보이지만(제한된 입력과 출력으로 코드를 블록으로 나눔) 유연성이 상대적으로 훨씬 더 떨어진다.
또한 코볼은 서식 규칙이 극히 엄격해, 명령 앞의 공백 개수까지 따질 정도다(파이썬 사용자라면 익숙할 것이다). 이와 같은 제약 중 일부는 코볼이 1960년대 메인프레임 시대에 탄생한 데 따른 부산물이다. 당시에는 프로그램이 펀칭 카드에 인코딩됐으므로 정확한 80열 서식이 중요했다. 그 외의 서식 제한은 가독성을 위한 것이다.
코볼 프로그램의 엄격한 규격화는 코드 자체가 최대한 프로그램을 잘 설명하도록 만들기 위한 것이다. 코볼 프로그램은 수년, 수십 년 동안 한 자리에서 사용되는 경우가 흔했다. 설계자들의 의도(또는 최종적인 결과)는 코볼 프로그램은 수년이 지난 후에도 그 프로그램을 만든 프로그래머의 도움 없이 어느 코볼 프로그래머라도 이해할 수 있도록 한다는 것이었다.
코볼의 어려운 점
코볼이 지금까지 계속 사용되는 것은 코볼 애플리케이션은 일단 작성되면 작은 수정만 거치면서 오랜 기간 그 자리에 유지되는 경향이 강하다는 데 기인한다. 앱의 규모가 크고 중요도가 높을수록 손을 대기가 어렵기 때문이다. IBM이 제공했던 것과 같은 메인프레임이 핵심 역할을 했다. 메인프레임은 고도의 하위 호환성을 통해 여러 하드웨어 세대에 걸쳐 최소한의 수정만으로 코볼 앱과 같은 레거시 소프트웨어를 실행하도록 만들어졌다. 그 결과 막대한 분량의 코볼 코드가 수십 년 동안 거의 변경되지 않은 채 계속 실행되고 있는 것이다.오랜 시간 동안 더디긴 해도 코볼도 발전했다. 지금은 객체 지향 변형인 OO-코볼(OO-COBOL)도 있다. OO-코볼은 유니코드(Unicode), 로캘(locales), 문자열과 정수 이상의 진보된 데이터 형식과 같은 현대적 기능을 지원한다. 그러나 코볼은 하위 호환성을 극성스럽게 유지하므로 이런 개선과 확장도 기존 코볼 애플리케이션이 계속 실행되어야 한다는 원칙을 따른다.
코볼의 언어 설계에는 코볼 프로그래머 사이에서 비판을 받는 부분도 있다. 과도하게 복잡한 프로그램이 되어 알아보지 못하거나 디버그하기가 어려운 나머지 코드 수정이나 개선을 엄두도 내지 못하는 경우도 있다. 코볼의 GO TO 명령은 C 언어의 명령과 마찬가지로 프로그래머가 프로그램 내에서 자유롭게 이동하고 그 결과 더 강력한 애플리케이션을 쓸 수 있게 해준다. 그러나 무분별한 GO TO 사용은 추적하기 어려운 상호 참조가 난무하는 혼란스러운 코볼 프로그램으로 이어질 수 있다.
현대의 코볼 프로그래밍
코볼은 몇 가지 형태로 지금도 사용된다. IBM은 자체 코볼 구현을 적극적으로 관리하며 많은 기존 애플리케이션을 유지하고 있다. 마이크로 포커스 코볼(Micro Focus COBOL)은 마이크로소프트 윈도우에서 실행되는 상용 코볼 에디션으로, 코볼 애플리케이션을 자바와 닷넷으로 컴파일하고 애저와 같은 클라우드 환경에 배포까지 해준다.또한 Gnu코볼과 같은 코볼의 오픈소스 구현은 무료로 제공되며 네이티브 기계어로 컴파일된다. 다만 상용 코볼에 비해 고급 배포 또는 디버깅 기능은 부족하다.
코볼은 여전히 폭넓게 사용되지만, 심층적인 코볼 지식을 갖춘 전문가를 구하기는 해가 갈수록 어려워지고 있다. 그 결과 오래된 애플리케이션을 21세기 환경으로 가져오기 위해 은퇴한 코볼 프로그래머가 현직으로 복귀하는 경우가 많다.
가장 찾기 어려운 것은 코볼 프로그래밍 지식이 아니라, 코볼이 실행되는 메인프레임 환경에 대한 정통한 지식이다. 많은 코볼 애플리케이션은 IBM의 IMS(Information Management System)나 CICS(Customer Information Control System) 트랜잭션 관리 및 데이터베이스 시스템과 같은 레거시 기술과 함께 작동하므로 관련 전문 지식도 필요하다.
결과적으로 코볼은 구식 언어임에도 코볼 언어 및 개발 환경에 대한 전문 지식 수요는 매년 더 높아지는 추세다. 코볼 및 관련 기술 전문가의 구인 수요는 상당하다. 2020년 3월에는 미국 뉴저지 주가 코로나바이러스 사태를 맞아 주 실업 급여 시스템 업그레이드 작업에 참여할 코볼 프로그래머 긴급 채용 공고를 내기도 했다.
코볼 배우기
코볼 언어 수요가 높아지면서 코볼을 위한 학습 리소스도 다시 급증하고 있다. 가장 끈질긴 생명력을 가진 언어인 코볼을 익히고자 하는 현대 개발자가 선택할 수 있는 코스는 다음과 같다.아일랜드 라임릭(Limerick) 대학의 컴퓨터 과학 및 정보 시스템 학부는 코볼 프로그래밍 과정 전체를 온라인으로 제공한다. 다른 리소스에 비해 최신 내용은 아니지만 오랜 기간 동안 코볼의 변화가 아주 적다는 점을 고려하면 결점이라고 하기는 어렵다.
오픈 메인프레임 프로젝트(Open Mainframe Project)도 코볼 리소스를 제공한다. 이 리소스에는 IBM이 공동 후원한 코볼 프로그래밍 전체 과정도 포함되는데, 라임릭 대학 과정보다 더 현대적이며 광범위하게 배포된 코볼 버전인 IBM의 zOS 코볼 구현에 맞춤 구성돼 있다.
코볼은 비즈니스 컴퓨팅 영역에서 수십 년 동안 중요한 위치를 지켜왔으며 코볼 프로그래밍 인력에 대한 수요는 앞으로도 계속 증가할 전망이다. 코볼 프로그램 유지 또는 현대화에 관심이 있다면 지금이 코볼에 뛰어들 최적의 시점이다. editor@itworld.co.kr
함께 보면 좋은 콘텐츠
Sponsored
Surfshark
“유료 VPN, 분명한 가치 있다” VPN 선택 가이드
ⓒ Surfshark VPN(가상 사설 네트워크, Virtual Private Network)은 인터넷 사용자에게 개인 정보 보호와 보안을 제공하는 중요한 도구로 널리 인정받고 있다. VPN은 공공 와이파이 환경에서도 데이터를 안전하게 전송할 수 있고, 개인 정보를 보호하는 데 도움을 준다. VPN 서비스의 수요가 증가하는 것도 같은 이유에서다. 동시에 유료와 무료 중 어떤 VPN을 선택해야 할지 많은 관심을 가지고 살펴보는 사용자가 많다. 가장 먼저 사용자의 관심을 끄는 것은 별도의 예산 부담이 없는 무료 VPN이지만, 그만큼의 한계도 있다. 무료 VPN, 정말 괜찮을까? 무료 VPN 서비스는 편리하고 경제적 부담도 없지만 고려할 점이 아예 없는 것은 아니다. 보안 우려 대부분의 무료 VPN 서비스는 유료 서비스에 비해 보안 수준이 낮을 수 있다. 일부 무료 VPN은 사용자 데이터를 수집해 광고주나 서드파티 업체에 판매하는 경우도 있다. 이러한 상황에서 개인 정보가 유출될 우려가 있다. 속도와 대역폭 제한 무료 VPN 서비스는 종종 속도와 대역폭에 제한을 생긴다. 따라서 사용자는 느린 인터넷 속도를 경험할 수 있으며, 높은 대역폭이 필요한 작업을 수행하는 데 제약을 받을 수 있다. 서비스 제한 무료 VPN 서비스는 종종 서버 위치가 적거나 특정 서비스 또는 웹사이트에 액세스하지 못하는 경우가 생긴다. 또한 사용자 수가 늘어나 서버 부하가 증가하면 서비스의 안정성이 저하될 수 있다. 광고 및 추적 위험 일부 무료 VPN은 광고를 삽입하거나 사용자의 온라인 활동을 추적하여 광고주에게 판매할 수 있다. 이 경우 사용자가 광고를 보아야 하거나 개인 정보를 노출해야 할 수도 있다. 제한된 기능 무료 VPN은 유료 버전에 비해 기능이 제한될 수 있다. 예를 들어, 특정 프로토콜이나 고급 보안 기능을 지원하지 않는 경우가 그렇다. 유료 VPN의 필요성 최근 유행하는 로맨스 스캠은 인터넷 사기의 일종으로, 온라인 데이트나 소셜 미디어를 통해 가짜 프로필을 만들어 상대를 속이는 행위다. 이러한 상황에서 VPN은 사용자가 안전한 연결을 유지하고 사기 행위를 방지하는 데 도움이 된다. VPN을 통해 사용자는 상대방의 신원을 확인하고 의심스러운 활동을 감지할 수 있다. 서프샤크 VPN은 구독 요금제 가입 후 7일간의 무료 체험을 제공하고 있다. ⓒ Surfshark 그 외에도 유료 VPN만의 강점을 적극 이용해야 하는 이유는 다음 3가지로 요약할 수 있다. 보안 강화 해외 여행객이 증가함에 따라 공공 와이파이를 사용하는 경우가 늘어나고 있다. 그러나 공공 와이파이는 보안이 취약해 개인 정보를 노출할 위험이 있다. 따라서 VPN을 사용하여 데이터를 암호화하고 개인 정보를 보호하는 것이 중요하다. 서프샤크 VPN은 사용자의 개인 정보를 안전하게 유지하고 해킹을 방지하는 데 유용하다. 개인정보 보호 인터넷 사용자의 검색 기록과 콘텐츠 소비 패턴은 플랫폼에 의해 추적될 수 있다. VPN을 사용하면 사용자의 IP 주소와 로그를 숨길 수 있으며, 개인 정보를 보호할 수 있다. 또한 VPN은 사용자의 위치를 숨기고 인터넷 활동을 익명으로 유지하는 데 도움이 된다. 지역 제한 해제 해외 여행 중에도 한국에서 송금이 필요한 경우가 생길 수 있다. 그러나 IP가 해외 주소이므로 은행 앱에 접근하는 것이 제한될 수 있다. VPN을 사용하면 지역 제한을 해제해 해외에서도 한국 인터넷 서비스를 이용할 수 있다. 따라서 해외에서도 안전하고 편리하게 인터넷을 이용할 수 있다. 빠르고 안전한 유료 VPN, 서프샤크 VPN ⓒ Surfshark 뛰어난 보안 서프샤크 VPN은 강력한 암호화 기술을 사용하여 사용자의 인터넷 연결을 안전하게 보호한다. 이는 사용자의 개인 정보와 데이터를 보호하고 외부 공격으로부터 사용자를 보호하는 데 도움이 된다. 다양한 서버 위치 서프샤크 VPN은 전 세계 곳곳에 여러 서버가 위치하고 있어, 사용자가 지역 제한된 콘텐츠에 액세스할 수 있다. 해외에서도 로컬 콘텐츠에 손쉽게 접근할 수 있음은 물론이다. 속도와 대역폭 서프샤크 VPN은 빠른 속도와 무제한 대역폭을 제공하여 사용자가 원활한 인터넷 경험을 누릴 수 있도록 지원한다. 온라인 게임, 스트리밍, 다운로드 등 대역폭이 필요한 활동에 이상적이다. 다양한 플랫폼 지원 서프샤크 VPN은 다양한 플랫폼 및 디바이스에서 사용할 수 있다. 윈도우, 맥OS, iOS, 안드로이드 등 다양한 운영체제 및 디바이스에서 호환되어 사용자가 어디서나 안전한 인터넷을 즐길 수 있다. 디바이스 무제한 연결 서프샤크 VPN은 무제한 연결을 제공하여 사용자가 필요할 때 언제든지 디바이스의 갯수에 상관없이 VPN을 사용할 수 있다.