Skip to content

기획자도 알아야할 IT 인프라 기초

작년 하반기부터 IT 기획자로 일하게 된 여자친구는 최근 새로운 시스템 구축에 대한 미팅에 참여하고 있다고 해요. 비전공자이면서 개발 지식이 부족한 기획자이기 때문에 알아야 할 인프라 지식이 뭐가 있을지 어디까지 알아두면 도움이 될지 고민해보려고 하는데요.

먼저, 개발자 단골 질문인 웹 브라우저에 URL을 입력하면 어떤 일이 생기나요?처럼 개발자가 아니더라도 기획자도 전체적인 흐름 에 대해서 이해하고 있어야 할 것 같아요. 기획하는 제품의 기능이 인프라를 통해서 어떻게 사용자에게 전달하는지를 알면 당연히 좋을 거라 생각이 들어요.

웹 브라우저에 URL 입력 시 인프라 흐름

인프라를 다루는 사람들

IT 인프라를 다루는 사람(인프라 엔지니어)을 어떻게 지칭하고 있는지 간단하게 알아보도록 할게요. 현재 클라우드 인프라 서비스를 사용중이라고 해도 과거부터 현재까지 인프라가 어떻게 변화해왔는지도 알아두면 좋을거에요.

서버 엔지니어 (Server Engineer)

전통적으로 회사 건물 내 전산실에서 직접 장비를 구축해 운영하던 온프레미스(On-premise) 환경에서 물리 서버와 네트워크를 관리하던 사람들을 말해요. 이 온프레미스 환경에서 인프라 리소스의 효율을 극대화하기 위해 VM(Virtual Machine) 이라는 VMware ESXi나 Hyper-V 같은 가상화 기술을 주로 사용해왔어요. 이제는 대부분 클라우드 서비스를 이용하기 때문에 클라우드 엔지니어로 직무를 전환하게 된 분들이 많을 거예요.

클라우드 엔지니어 (Cloud Engineer)

온프레미스 환경의 단일 서버 관리를 넘어서 네트워크 장비, 대용량 스토리지, 보안 정책 등 시스템 전반에서 인프라를 설계하는 사람들을 말해요. 서비스 규모가 비약적으로 커지고 운영 환경이 클라우드로 대거 전환되면서 하드웨어를 직접 만지기보다 가상화된 자원과 아키텍처를 논리적으로 판단하고 다루는 역량이 중요해졌으며, 요즘에는 이들을 주로 클라우드 엔지니어 라고 부르는 것 같아요.

DevOps 엔지니어 (DevOps Engineer)

클라우드 환경에서 VM 가상화 기술을 넘어 컨테이너 (서비스를 가볍게 격리해 띄우는 기술) 기반 기술로 발전함에 따라 인프라가 확대되면서 DevOps(데브옵스) 엔지니어라는 용어가 만들어졌어요. 서비스 제품을 위한 수많은 컨테이너를 지휘하는 기술(컨테이너 오케스트레이션), 필요한 서버 자원을 자동으로 준비해 할당해 주는 일(프로비저닝), 마우스 클릭 대신 코드로 인프라를 설계하고 제어하는 기술(코드형 인프라, IaC) 등이 결합되며 운영의 업무 영역이 크게 확장되었어요. 이에 따라 개발한 제품이 실제 서비스 운영 환경에 자동으로, 또 안정적으로 배포될 수 있도록 배포 파이프라인을 만들고 시스템의 성능을 실시간으로 모니터링하는 전문적인 데브옵스 엔지니어라는 직무가 나타난 거예요.

결론은 서버 엔지니어, 클라우드 엔지니어, 데브옵스 엔지니어 모두 인프라 엔지니어를 말한다는 거예요.

IT 인프라 구축 용어

이제 인프라 엔지니어들이 IT 시스템 구축에서 인프라 구성에 따라 어떤 용어들을 사용하는지 알아보도록 해요.

온프레미스 (On-premise)

회사 건물 내 서버실이나 전화국의 물리 서버를 이용하는 전통적인 방식을 말해요. 전통적인 방식이라 이야기했지만 클라우드 서비스를 이용하고 있어도 일부 서버들은 (비용 또는 보안 상의 이유로) 온프레미스 환경에 있는 서버를 이용하게 되는 경우도 있으므로, 클라우드 서비스에서 온프레미스 환경을 클라우드처럼 사용할 수 있는 기능을 제공하고 있어요.

  • 클라우드 환경에서 솔루션 라이센스를 사용할 수 없는 경우
  • 보안 규제로 인해 클라우드 환경 내 위치하면 안되는 경우

VM 서버 (Virtual Machine Server)

하나의 물리 서버 위에 가상화 기술(하이퍼바이저, KVM, VMware ESXi 등)을 적용하여 가상의 독립된 여러 대의 서버 컴퓨터처럼 나누어 사용하는 형태를 말해요. 대부분의 클라우드 서비스는 이 VM 기술 을 기반으로 자원을 쪼개어 사용자에게 제공하며, 가장 대표적인 예시가 AWS의 EC2(Elastic Compute Cloud) 인스턴스예요.

클라우드 인프라 (Cloud)

클라우드 서비스 회사의 데이터센터 자원을 빌리는 방식으로 온프레미스의 반대 개념이에요. 회사 서버실을 두지 않고 KVM 가상화 기술을 기반으로 간단하게 원하는 서버를 생성하고 사용한 만큼 비용을 지불해요. 흔히 이런 클라우드 인프라 자원을 가상화하여 그대로 제공하는 형태의 서비스를 IaaS (Infrastructure as a Service, 아이아스) 라고 불러요. 정부 사이트들도 대부분 공공 클라우드 환경으로 전환되었어요.

인프라 구성 예시

위 클라우드 인프라 구성 예시는 정답이 있는 게 아니라서 필요에 따라 유연하게 구성되어 복잡해지기도 합니다.

베어메탈 (Bare-metal)

클라우드 서비스에서 가상화 기술이 아닌 독립적인 물리 서버를 임대하는 방식을 말해요. 클라우드 서비스 기업이 구축해 둔 서버실의 물리 서버 한 대를 통째로 빌려 쓰는 형태라고 볼 수 있어요. 국내 서비스 중에서는 NHN Cloud의 베어메탈 서버 안내를 통해 실제 어떤 하드웨어 환경으로 공급되는지 참고해 볼 수 있어요. 가상화 기술로 인한 성능 오버헤드 없이 하드웨어 본연의 성능을 최대한 활용하고자 할 때 도입해요.

컨테이너 (Container)

OS 전체를 가상화하는 기존 VM 기술과 다르게 컨테이너 는 일부를 가상화하여 더 가볍게 서버를 구동하는 방식이에요. 요즘 클라우드 환경을 이용하는 대표적인 방식으로 이 컨테이너 기술을 주로 사용하고 있어요. 그리고 심지어는 이 컨테이너를 쉽게 관리할 수 있게 플랫폼화한 PaaS 서비스를 제공하는 회사가 많아지고 K-PaaS도 등장했어요.

결론적으로, 현대 IT 인프라는 KVM 가상화 기술 로 제공하는 클라우드 서버에 컨테이너 기반으로 애플리케이션을 구동해서 웹 서비스를 운영하는 구조라고 요약할 수 있어요.

미들웨어

미들웨어 는 WAF(Web Application Firewall)와 같이 애플리케이션까지 도달하는 과정에서 거치는 솔루션을 말해요. 웹서버뿐만 아니라 DBSAFER DB와 같은 데이터베이스 접근통제 솔루션도 미들웨어가 되는 거죠.

NAT

우리가 실무에서 VPN을 연결하는 이유는 안전한 사설 네트워크 통신을 위해서예요. 그리고 이때 사설 IP 대역이 서로 충돌하지 않도록 하거나 외부 통신을 연동하기 위해 네트워크 주소 변환(NAT) 기술이 함께 사용되곤 해요. VPN과 함께 네트워크 IP 대역인 서브넷(CIDR) 을 이해하고 있으면 더 좋아요. 프라이빗 서브넷 그리고 NAT 게이트웨이와 같은 용어들이 미팅 내에서 언급될 수 있거든요.

로드밸런서

로드밸런서 는 들어오는 네트워크 트래픽(사용자 요청 등)을 여러 개로 구동된 서버로 분산해서 시스템을 안정적으로 유지하도록 도와주는 미들웨어를 말해요. 대표적으로 Nginx Ingress Controller가 있는데, 외부 요청을 받아 내부 WAS 서버로 안전하게 넘겨주는 리버스 프록시(Reverse Proxy) 역할을 수행하면서 동시에 트래픽 분산까지 함께 처리해 준다고 생각하면 돼요.

외부 시스템 연동 용어

IT 시스템 구축에서 기존에 존재하는 또는 신규로 함께 추가될 외부 시스템과의 연계 흐름이 포함될 수 있어요. 각 연계 서버가 어떻게 통신할 것인지, 보안을 위해서 어떤 인증 방식을 사용할 수 있는지 이야기가 오고갈 수 있어요. 이런 연계 흐름을 파악하기 위해서는 도메인, SSL 인증서, API, 웹훅과 같은 용어들을 알아야 해요.

도메인과 SSL 인증서 (Domain & SSL)

이제는 HTTPS 통신이 필수가 되었어요. HTTPS 통신에서 비밀번호처럼 사용되는 인증서를 SSL 인증서 라고 해요. 그리고 이 SSL 인증서에는 서로 안전한 사이트로 인식할 수 있게 도메인 주소 가 포함되죠. 예를 들어, 정부 24(https://www.gov.kr/) 사이트에 대한 인증서를 살펴보면 *.gov.kr을 신뢰할 수 있다는 걸 알 수 있어요.

신뢰할 수 있는 인증서를 판단하는 전자서명 에 대한 개념에 대해서 찾아서 알아두면 좋아요.

API 그리고 Webhook

연계 시스템에서 API 엔드포인트를 제공한다는 건 우리 서버가 해당 서버에 요청해서 데이터를 받아간다는 의미예요. 반대로, 웹훅(Webhook)이란 용어가 언급된다면 해당 시스템에서 전달할 정보가 있을 때 우리에게 해당 주소로 직접 전달해주겠다는 거예요. 우리가 일상생활에서 휴대폰 푸시(Push) 알림을 받는 게 바로 웹훅 이라고 생각하면 돼요.

API 와 Webhook 통신 방식의 차이

이와 같이 다양하고 광범위한 IT 인프라에서 사용되는 지식 중에서 시스템 구축에 필요한 용어들을 간단하게 알아보았는데요. 기획자뿐만 아니라 실무 경험이 부족한 초보 개발자 입장에서 도움이 되면 좋겠어요.

Released under the MIT License.