Onik Lab.

시스템을 구축한다면 - (3) Network, Security

October 05, 2020 | 5 Minute Read • 0 Comments

지난 글:

시스템을 구축한다면 - (1) 사전 고려 사항

시스템을 구축한다면 - (2) DBMS

0. Intro

일단 시스템을 구축하기 위해서는 그에 맞는 환경을 구축하고 설정하는 것이 우선이겠죠. 물론 앞선 글에서의 사전 고려사항과 같이 예산, 인원, 기간을 고려해서 그에 맞는 환경을 구축하는 것이 중요한 일입니다만, 어떤 환경에서의 구축이 필요할 지에 대해서는 어느 정도 준비는 갖춰지지 않을 수 없다고 볼 수 있습니다.

흔히들 Infrastructure(이하 Infra, 인프라)를 구축하기 위해서 고려해야 할 요소는 일반적으로 다음과 같습니다.

  • 애플리케이션 서버(Application Server: AP)
  • 데이터베이스 관리시스템(Database Management System: DBMS)
  • 네트워크 및 방화벽(Network and Firewall)
  • 보안(Security)
  • 프레임워크, 디자인 패턴 및 언어(Framework, Design Pattern, Programming Langauge)
  • 저장소(Storage)
  • 도메인(Domain)
  • 형상관리(Configuration Management)

물론 그 외에도 다른 요소들이 있을 수 있습니다만, 일반적으로는 위 범주에서 이루어진다고 볼 수 있습니다.

이번에 쓸 글은 위 요소 중 네트워크 및 보안을 주제로 써 보겠습니다. 지난 글인 DBMS에 이어서, 네트워크 및 보안 구성 시의 고려사항에 대해서 간단히 언급하겠습니다.

1. 네트워크 구성 위치 및 백업

네트워크는 사실 인프라를 구성할 때 가장 먼저 고려되어야 할 요소가 맞습니다. DBMS를 구축하거나, 또는 AP(Application Server)를 구축하는 데 있어서 어떤 위치에 서버를 세팅할 것인가. 이를 나타내는 것이 네트워크이기 때문입니다.

IDC(Internet Data Center)에 서버를 구축한다거나, AWS, Google Cloud 등을 사용할 경우에는 원격지에 네트워크를 구성한다고 볼 수 있는 반면, 직접 서버 장비를 구매한 다음에 네트워크를 구성하는 것은 로컬(Local)에서 구성한다고 볼 수 있습니다. 사실 이것은 매우 흔한 이야기입니다.

그렇다면 여기서 개념을 조금 더 확장해 볼까요.

2. 백업 관리

이 부분은 역시 원격지 서버를 사용한다면 어려운 문제가 아닙니다.

IDC에서 서버를 운영한다면 백업서버 역시 다른 위치의 IDC를 사용하여 재해 관리를 할 수 있고, AWS나 Google Cloud의 경우에는 region 관리를 통하여 용이하게 할 수 있습니다. 만약 Global Service까지도 꿈꾼다면 당연히 해외에도 거점을 두는 방법이 있겠죠.

하지만 로컬에서 구성할 경우에는 이야기가 달라집니다. 같은 위치에 백업 서버를 구성한다면 재해관리에 큰 문제가 생길 수 있기 때문에 반드시 멀리 떨어져야 하고, 금융기관의 경우에는 140km 거리에 두는 것으로도 알려져 있습니다. 사실 정해진 것은 아닙니다만, IT 거버넌스 차원에서도 이러한 부분을 권장하는 것도 사실이고요.

관련글: 로켓펀치 블로그 - [AskMe] 클라우드 시대 본격화! 당신의 클라우드는 ‘안정’하신가요?

그리고 백업 스케쥴링에 대한 주기도 고려해야 합니다. 백업을 실시간으로 할 것인가, 아니면 매일 또는 주 단위 주기로 할 것인가 등등. 이 부분은 네트워크 트래픽하고도 연관된 부분이기 때문에 예상 트래픽을 사전에 검토하고 거기에 맞춰서 구성하는 것이 좋겠죠.

3. 트래픽(Traffic)

제일 중요한 요소는 역시 트래픽이겠죠.

옛날 웹호스팅 대행 업체의 경우에는 일일 트래픽을 정해놓고 그 트래픽을 초과하면 접속을 못하게 막는 경우가 많았습니다.

Traffic 초과

하지만 클라우드에서는 돈을 더 내고 이러한 부분을 막아줄 수 있다는 장점이 있죠.(물론 충분한 예산이 확보되지 않는다면 그 부분이 단점이 될 것이겠고요)

트래픽과 관련된 부분은 앞서 DBMS 게시물에서도 언급했듯이 트랜젝션(Transaction)이 발생했을 때 DBMS에서 직접 처리하는 것보다는 Application에서 자체적으로 필터링을 하는 추세로 이동되고 있습니다. 하지만 직접적인 속도를 보장하기 위해서는 네트워크를 어떻게 구성했느냐만큼 중요한 것은 없겠죠.

네트워크 망을 선택하는 부분도 중요합니다. 로컬로 구축했을 때 국내의 경우에는 KT, U-Plus, SK Broadband 초고속망을 사용하고 있으며, 클라우드는 자체 네트워크 망을 사용한다는 차이가 있지만 속도를 보장할 수 있는 망을 선택해야 그에 따른 트래픽도 당연히 보장될 수 있겠죠.

그리고 트래픽과 관련해서는 네트워크 내에서 로그(Log)를 기록해서 속도 측정도 지속적으로 하고, 이상없이 접속하였는가에 따른 비율 분석 등도 당연히 할 수 있으면 좋겠죠. 최근 네트워크 장비에서는 이러한 부분도 지원을 하지만, 구성할 때 반드시 고려하는 것을 권장합니다.

추가적으로, 필수 사항은 아니지만 거의 필수나 마찬가지인 네트워크 로드밸런싱 부분도 검토하면 좋을 것 같습니다. 간단히 요약하자면 네트워크를 분산하여 트래픽 관리를 효율적으로 하는 서비스로 볼 수 있습니다.

AWS Classic Load Balancing

트래픽이 높을 경우에 사용을 한다면 충분히 고려할 수 있을 것 같습니다.

4. 방화벽 및 보안

사실 방화벽과 관련해서는 제가 가지고 있는 사전 지식이 높은 편은 아닙니다. 다만 외부 침입을 차단하고 허용하는 부분에 대한 관리를 위해서 방화벽 도입을 하지 않는 네트워크는 없다고 볼 수 있습니다.

방화벽과 관련해서는 자체 구축 시에는 관련된 방화벽 패키지 등을 구매해서 도입하는 방법이 있을 것이고, 클라우드에서는 역시 자체 방화벽 서비스를 제공하는 형태로 이루어집니다.

방화벽 및 보안은 접속 가능한 네트워크 대역대를 설정하도록 되어 있습니다. 그래서 DB 서버를 접속할 경우 허용할 IP 주소대를 설정할 수 있어야 하고, AP 서버 또한 마찬가지입니다.

이러한 부분은 AWS에서는 Inbound - Outbound 설정을 통해서 관리할 수 있고, 네트워크의 경우에는 방화벽에서 해당 부분을 설정할 수 있는데, 구매 업체하고의 협의를 통해서 진행 가능할 것으로 보입니다.

사실 시스템을 구축하려는 사람이라면 대부분은 개발자 내지는 관리자의 경우가 대부분이고 네트워크에 대한 지식 자체가 전문가 수준까지는 아닐 것으로 예상되므로, 클라우드 또는 업체하고 협의를 통해서 설정한다면 좋겠네요.

여기는 제가 자세하게 언급하지 못한 점 양해 바라겠습니다.

5. 비용

다음은 비용입니다.

직접 네트워크를 운영하게 되었을 때 비용

  • 서버 장비 구매 비용(백업서버 포함)
  • 전담 관리 인력 인건비

클라우드로 운영하게 되었을 때 비용

  • 이용료

여기서 클라우드 서비스를 이용했을 경우에 전담 인력이 필요하지 않는 것은 아닙니다. 하지만 상대적으로 공수 자체가 줄어들 수 있고, 네트워크와 관련된 사전 지식이 조금 낮아도 관리가 가능하므로 인건비 절감이 가능해집니다.

그러나 클라우드 운영비용이 생각보다 저렴하다고 판단할 수 없기 때문에 타당성 검토가 필요하겠죠. 하지만 최근 추세가 클라우드에 서버를 두는 것인만큼, 그 또한 적극적으로 권장할 수는 있겠습니다.

특히 기존 레거시 시스템(Legacy System)에서 클라우드로 마이그레이션(Migration)을 하게 된다면, 어떤 이점이 있는지를 더더욱 검토하겠죠. 이미 장비는 다 갖춰졌는데 굳이 클라우드로 이동했을 때 비용 절감이 가능할지 여부 등등.

개인이 혼자서 시스템을 구축한다거나 할 경우에는 클라우드를 이용할 수밖에 없을것입니다. 아무래도 수동으로 하게 된다면 손이 많이 가는 작업인 것은 분명하지만, 클라우드에서는 기본적인 스케쥴링, 트래픽 관리 등을 다 해주기 때문에 상대적으로 공수 절감 효과가 나타나기 때문입니다.

6. 마치며

네트워크와 관련해서는 사실 제가 전문 지식이 높은 편이 아니기 때문에 일반론적인 부분만 언급했네요. 그렇다 하더라도 고려사항 정도를 정리한다면 하나의 체크리스트 식으로 관리할 수 있을 것 같습니다.

네트워크와 관련된 체크리스트는 다음과 같습니다.

  • 클라우드냐 레거시냐, 예산에 맞춰서 타당성 검토 필요
  • 클라우드를 선택할 경우
    • 로드밸런싱 적용 여부
    • 방화벽 사용 및 접속 IP대 설정
    • 백업 관리는 어떤 식으로 이루어지는가
  • 레거시를 선택할 경우
    • 서버 장비 구매 및 백업을 위한 장소 배치
    • 전담 인력 고용 및 필요 공수 책정
    • 방화벽 구입을 위한 업체 선정 및 설정 진행
    • 백업 주기 검토
    • 트래픽 분석
    • 인터넷 회선 검토

결국은 어떤 유형의 네트워크를 선택하느냐에 따라 체크리스트 또한 판이하게 달라집니다만, 저라면 역시 클라우드를 권장할 수밖에는 없을 것 같습니다.

일단 아직 더 쓸 글이 많지만 이번 시리즈 글은 여기서 마칠게요. 시리즈를 지속시켜 나가기 앞서서 해야 할 일이 있기 때문에 양해 바라겠습니다.

다만 현재까지의 글을 보면서 어떤 과정으로 시스템 구축 시 고려해야 하는가를 검토하는 것도 좋을 것 같습니다.

글 마치겠습니다.