'서버'와 클라이언트-서버 구조의 변천 과정
IT 생태계 내부 구성 요소로 하드웨어, 소프트웨어, 인력이 있다는 것을 알았다. 그에 앞서 인터넷 뱅킹 서비스를 통해 IT 서비스가 어떻게 이루어지는가를 알았다. 다시 정리를 해보자면, IT 서비스는 IT 생태계의 구성요소인 하드웨어, 소프트웨어와 인력이 결합해서 사용자가 요구하는 서비스를 하기 위한 것이라고 할 수 있다. 즉, 뱅킹 시스템은 뱅킹 서비스를, 배달 앱은 배달 서비스를 제공한다.
IT 서비스 핵심은 서비스를 제공하는 '서버'다. IT는 서버의 발전과 더불어 발전되어 온 역사다. 우리의 최종 목적지는 오늘날 범용적으로 사용되는 웹 서비스를 이해하는 것이다. 웹 서비스 중심의 오늘날 IT 환경을 모르고 IT 직업을 논하기는 거의 불가능하다. 웹 서비스를 알려면 IT 서비스 주체인 서버를 알아야 한다. 또 서버 구성이 어떻게 변천하여 오늘날 웹 서비스에 이르게 되었는지 알아야 한다. 특히 개발자라면 웹 서비스가 이루어지는 웹 환경을 이해하여야 한다. 웹 환경에 맞춰 개발해야 하기 때문이다.
IT나 전산을 잘 모르는 사람도 '서버'라는 말을 많이 들어 보았을 거다. 어디서 들어 봤더라 기억을 되새겨보자. 인터넷 접속을 했는데 접속이 안 되는 경우 웹페이지에 "서버에 접속할 수 없습니다."라는 메시지가 나왔다. 아니면 "사용자가 너무 많아 서버가 폭주해서 서버가 다운되었습니다."라는 뉴스도 종종 듣기도 한다. 그러면서 서버 용량을 예측 못한 서비스 제공자를 비난하기도 한다.
'서버'는 무엇일까? 위의 사실을 종합해 보자면 '어떤 서비스에 있어 주요 기능을 담당하는 대형 컴퓨터, 중앙 컴퓨터'정도로 이해하는 것 같다. 거의 제대로 알고 있다. 그러면 대형 컴퓨터 또는 중앙 컴퓨터라고 하지 않고 왜 '서버'라고 하는 것일까?
'서버'는 영어의 Server로 '서비스를 하는 주체'라고 할 수 있다. 이를 이해하기 위해서 '서버'와 '클라이언트'라는 개념을 이해하도록 하자. 식당에서 여러분이 주문을 하고 나면 식당 종업원이 음식을 갖다주고, 여러분은 손님으로서 식사를 한다. 이때 음식을 제공하는 식당 종업원 또는 주인은 서비스하는 사람이므로 서버가 되고, 여러분은 서비스를 받는 손님으로 클라이언트가 된다. 이와 마찬가지로 IT 시스템에서도 서비스를 제공하는 측을 서버라고 하고 서비스를 요청하고 서비스를 받는 측을 클라이언트라고 한다.
| 서버 Server|
서버는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server program) 또는 장치(device)를 의미한다. 특히, 서버에서 동작하는 소프트웨어를 서버 소프트웨어(server software)라 한다. 《위키피디어》
앞의 뱅킹 서비스 구성도를 다시 머리에 떠올리면서 동작을 살펴보자. 여러분이 은행 계좌 이체를 하기 위해 모바일 뱅킹 앱에 로그인을 한다. 그러고 나서 잔액을 조회한다. 그다음 친구에게 빌린 돈을 이체를 한다고 한다면 이 과정에서 클라이언트와 서버는 누구일까? 식당 주인과 손님을 생각해 보면 쉽다. 여러분이 사용하고 있는 스마트 폰이 계속적으로 무엇인가를 요구하면(로그인 요구, 조회 요구, 이체 요구), 그 요구를 받은 전산센터의 컴퓨터는 팽팽 돌아서 일을 처리하고 그 결과를 여러분 스마트폰에 알려준다. 따라서 여러분이 사용하고 있는 스마트폰, 또는 PC가 클라이언트가 되고 전산센터에 있는 컴퓨터는 서버가 된다. 그래서 우리는 전산센터에 있는 대형, 성능이 좋은 컴퓨터를 '서버 컴퓨터', '서버'라 부른다. 서버가 문제가 생기면 클라이언트는 서비스를 받을 수 없다. 그래서 서버가 다운이 되면 할 수 있는 것이 아무것도 없다.
이제 위 '서버'에 대한 용어정의에서 나온 말을 이해할 수 있다. 전산센터 뱅킹 시스템 서버에는 뱅킹에 관한 처리를 담당하는 서버 소프트웨어가 동작하고 있으며, 카카오 전산센터에는 서버에는 채팅 서비스 소프트웨어가 돌아가고 있을 것이다.
전산 센터 랙 안에는 서버들이 많다. 서비스를 이용하는 사용자가 많으면 많을수록 서버의 수를 늘려야 한다. 클라이언트의 요구가 많은데 서버의 용량이 적으면, 손님이 많은데 주방 인력이 적어 제대로 요리가 안 돼 손님이 오래 기다리거나 기다리다가 다른 곳으로 가는 일이 발생한다. 이럴 때 식당 주인이 요리사와 종업원을 늘려야 하는 것처럼, 서버도 마찬가지다. 클라이언트 사용자 수가 많으면 서버의 용량을 늘려야 서비스에 문제가 생기지 않는다. 그래야 서버 폭주에 대응할 수 있다.
서버 용량을 어떻게 늘려야 할까? 서버의 증설에도 여러 가지 효율적인 방법이 있다. 단순히 말한다면 ①서버의 자원 즉, CPU, 메모리를 늘리거나 ②연동 가능한 서버를 추가 설치하고 서버 간 연결할 수 있다. 전산센터 내의 많은 서버를 어떻게 구성하는가는 매우 전문적인 일이다. 그 말은 이런 일을 하는 IT 직업이 있다는 것을 말한다. 서버를 효율적으로 구성하기 위한 일은 시스템 전체의 성능을 좌우하는 매우 중요한 일이다. 따라서 하드웨어, 소프트웨어에 대한 지식과 경험이 필요하다.(뒤에 이 직업도 살펴볼 것이다.)
이쯤에서 서버와 일반적인 PC가 어떻게 다른가라는 의문이 들것이다. 둘 다 컴퓨터라는 점에서는 같다. 즉, CPU, 메모리, 저장장치, 네트워크 장치를 가지고 있다. PC는 모니터와 키보드가 반드시 필요하지만, 서버는 그냥 PC의 본체만 있다. 입출력은 PC로 서버에 접속하므로 별도 전용 모니터나 키보드는 없다.
서버와 PC의 차이점은 서버는 많은 시스템과 연결되어야 하기 때문에 PC에 비해 CPU, 메모리, 네트워크 장치 등에 있어 더 높은 사양과 확장성이 있도록 설계되어 있다. PC에도 다양한 사양이 있듯, 서버도 고성능 PC와 별다를 바 없는 낮은 사양에서 슈퍼컴과 같은 고도의 사양을 가진 하이엔드급에 이르기까지 천차만별이다.(최근에는 저사양 서버를 연결하는 기술이 발전되어 저사양 서버 사용이 일반적인 추세다.)
고성능 하이엔드급 서버는 가격이 비싸다. 그러나 시간이 갈수록 하드웨어 가격은 낮아지고 성능은 높아지고 있다. 그 말은 시스템을 만드는 데 있어 하드웨어 비중이 낮아지고 있다는 의미다. 예전에는 100억짜리 시스템을 만든다고 할 때 하드웨어 즉 서버의 비용이 가장 컸다. 그러나 지금은 가장 낮다. 그럼 뭐가 제일 큰 비중을 차지할까? 그렇다. 인건비가 제일 비중이 높다. 필자의 경험으로는 100중 45가 인건비(개발자 등의 비용), 35 정도가 소프트에어 비용, 그리고 하드웨어가 20이 하드웨어 비용인 것 같다. 예전에 공짜라고 생각했던 소프트웨어 비용이 겁나서 시스템 구축 사업에 애로를 겪을 때가 많다.
컴퓨터를 이용한 정보 처리 기술 발전은 크게 세 단계로 구분할 수 있다. 초기 IBM에 의해 시작된 대형 중앙처리 컴퓨터인 메인프레임(Mainframe)에서 본격적인 클라이언트-서버 시스템, 그리고 오늘날 일반적 구조인 웹 서비스로 발전되었다. 이런 변화의 요인은 기술이다. 기술발전에 따라 하드웨어 성능이 높아졌고, 네트워크 속도는 상상하지 못할 만큼 빨라졌다. 그래서 더 좋게, 더 빠른 IT 서비스(IT에서 안정성은 기본)를 만들 수 있게 되었다. 반면 기술의 내용은 더 복잡해졌고, 관리도 더 어려워졌다.
1964년 IBM에서 출시한 시스템/360이 현대식 메인프레임의 시초라고 한다. 초창기 국가나 기업에 필요한 복잡한 작업을 처리하는 대형 컴퓨터로써, 다수의 단말을 연결해서 사용하는 시스템이다. 즉, 중앙에서 하나의 시스템이 모든 처리를 하는 형태의 시스템이다.
메인프레임은 고성능 중앙 컴퓨터이며 데이터 저장과 관리를 전문으로 하는 장비다. 메인프레임과 연결된 더미 터미널은 키보드와 모니터(콘솔)로만 구성된 간단한 장비다. 터미널은 메인프레임과 연결되어 필요한 데이터 요청을 메인프레임에게 전달하고 메인프레임은 처리한 후 그 결과를 터미널의 모니터에 보여준다.
모든 정보 처리기능은 중앙 컴퓨터인 메인프레임이 하고, 더미 터미널(컴퓨터가 아니므로 자체로 연산기능이 전혀 없다)은 처리 결과를 보여주는 모니터, 콘솔 역할만 한다. 사용자는 메인프레임이 보내 주는 단색의 문자만 볼 수 있다. (그림 표현도 단색의 점으로만 한다)
메인프레임 구조는 모든 처리를 중앙에서 하는 간단한 구조라서 안정적이다.(시스템이 복잡해질수록 안정성은 떨어질 수밖에 없다) 정보 처리 시스템에서 가장 중요한 것은 안정성이다. 장애가 나지 않아야 하고, 장애가 나더라도 데이터가 안전해야 한다. 이런 안정성 때문에 아주 중요한(mission critical) 기업 업무에서는 아직 메인프레임을 사용하는 곳이 많이 있다.
메인프레임의 가장 큰 단점은 고가의 장비라는 것이다. 따라서 교체나 증설이 쉽지 않다. 중앙에서 집중된 폐쇄된 시스템이다 보니 안정성은 높지만 확장상이나 유연성이 부족하다 보니 다양한 사용자의 요구에 대응이 쉽지 않다. 단순한 더미 터미널로는 사용자가 요구하는 다양한 그래픽 화면을 보여 줄 수가 없다.(당시에는 네트워크 기술이 부족해 단말과 중앙처리 컴퓨터 간의 데이터를 최소화할 수밖에 없었음)
장점 : 안정성(처음으로 여러 사람이 동시에 사용하는 중앙 시스템을 구현함)
단점 : 비싸다. 폐쇄적이라 확장성, 유연성 부족. 화면(사용자 인터페이서)이 문자만 가능해 단조로움
너무 비싸고 덩치도 큰 메인프레임의 단점을 극복하기 위해 좀 더 작고 폐쇄적이지 않은 서버를 원하게 되었다. IBM 메인프레임의 독주체제에서 IBM, HP(지금의 HPE), Sun(지금의 Oracle)의 Unix서버로 3강 구도로 서버 체제가 변화하게 되었다.
서버의 변화와 더불어 IT에 혁신적인 변화를 이끈 것은 개인용 컴퓨터(PC)의 발전과 보급이었다. 메인프레임 시절 컴퓨터는 너무 비싸 개인이 사용하기는 어려웠지만, PC가 일반화되면서 더미 터미널 대신 PC를 단말로 사용할 수 있었다. 데이터를 중앙 서버에서 관리하고 이 데이터를 복수 개의 클라이언트가 사용하는 것은 동일하지만 가장 큰 차이점은 클라이언트가 단순한 터미널이 아니라 프로그램을 실행할 수 있는 독립된 컴퓨터라는 점이다.
따라서 클라이언트에 직접 프로그램을 설치하여 서버가 해야 할 일을 직접 수행한다. 서버가 할 일을 클라이언트가 나누어서 수행할 수 있어 서버 부담이 줄었다. 즉 서버 일을 클라이언트로 내려 주었다고 할 수 있다. 그러면서 서버의 사이즈를 줄일 수 있다.(이것을 우리는 Down Sizing이라고 한다) 예를 들어 복잡한 문서작성이 필요할 경우 문서 작성에 필요한 데이터만 서버에게 요청하고 이 문서를 만들기 위한 계산이나 그래픽 작업과 출력하는 일은 클라이언트가 할 수 있다.
|다운 사이징 Down Sizing|
IT에서 다운 사이징이라 함은 대기업 대형 컴퓨터로 수행했던 작업을 PC 또는 중소형 서버 등의 소규모 컴퓨터로 여러 대를 연결하는 시스템 환경의 변화를 말한다. 직접적으로 메인프레임에서 유닉스와 같은 서버로의 변경을 말한다. 국내에서는 90년대 유닉스 서버로 전환하는 다운 사이징 작업이 많았다.
터미널은 오로지 메인프레임이 제공하는 기능만 사용할 수 있지만 클라이언트가 PC로 바뀌면서 흑백 문자만 보아야 했던 사용자는 컬러에 그래픽이 있는, 오늘날 사용하고 있는 다양하고 풍부한 유저 인터페이스를 접할 수 있게 되었다.(윈도 OS, 마우스 등의 보급도 한 몫했다) 클라이언트가 많은 역할을 해서 리치 클라이언트(Rich Client)라 하기도 한다.
하지만 세상일이 좋은 것이 있으면 또 그 이면에는 안 좋은 것도 있기 마련. 많은 장점에도 불구하고 리치 클라이언트는 관리가 쉽지 않다. 프로그램 사용을 위해 모든 클라이언트마다 프로그램을 깔아야 한다. 여러분이 온라인 게임 스타크래프트를 하기 위해 스타크래프트를 여러분 PC에 깔아야 하는 것과 같다. 따라서 클라이언트에 프로그램을 배포하고 설치하는 것이 큰 일이다. 설치 이후에도 프로그램이 변경되면 다시 재설치하거나 업데이트를 해야 하는데 이 역시 번거롭다. 더미 터미널이 터미널만 있으면 접속해서 프로그램을 사용할 수 있는 것과는 달리 클라이언트-서버 구조에서는 해당 프로그램을 클라이언트에 설치해야만 프로그램을 사용할 수 있다. 클라이언트 PC의 사양에 따라 프로그램이 잘 작동하지 않는 경우도 많아 관리 어려움이 있다.
장점 : 서버의 규모를 줄일 수 있다.(하드웨어 비용이 낮아진다) 풍부한 사용자 인터페이스(그래픽 등)
단점 : 클라이언트에 프로그램 배포, 설치 및 업데이트와 같은 관리가 어렵다.
클라이언트-서버 구조로 시스템 환경이 바뀌면서 오늘날과 같은 IT 서비스 구조가 만들어졌다. 현재에도 이 구조는 유효하다. 클라이언트에서 작업이 많은(속도를 요구하는) 많은 프로그램은 아직도 이 구조에서 돌아간다.(클라이언트 PC에 설치해야 하는 프로그램은 대부분 이 구조라 생각하면 된다)
PC의 발전과 보급이 메인프레임을 바꾸었듯, 리치 클라이언트-서버 구조의 단점을 극복할 수 있는 IT에서의 혁명적인 발전이 다시 새로운 IT 구조를 만들어 놓았다. 그 혁명적인 발전은 무엇일까?
체계적이고 보완된 내용으로 브런치 글과 같은 이름으로 출간을 하게되었습니다. 아래의 링크를 통해 자세한 내용을 확인할 수 있습니다.
교보문고
나에게 맞는 IT 직업 찾기
예스24
나에게 맞는 IT 직업 찾기
알라딘
나에게 맞는 IT 직업 찾기