🌐 6장. 네트워크 설계와 구축

6.1. 네트워크를 설계﹒구축할 때 할 일

6.1.1. 시스템 개발과 네트워크 설계﹒구축의 관계

네트워크 설계는 처음에 그 시스템이 무엇을 하는 시스템인지 생각하는 것부터 시작한다. 

대전제는 '그 시스템은 무엇을 하는 시스템인가?'를 생각하는 것이다. 거기에서 더 나아가 어떤 네트워크가 필요한지 생각한다.

 

시스템 구성에 따라 필요한 네트워크 구성도 달라진다. 예를들어, 웹 브라우저로 조작할 수 있는 일정 관리 앱을 만들고 싶다고 가정한다. 웹 애플리케이션 A를 회사 내에서만 사용하고 싶다면 사내 랜상에 웹 서버와 DB서버를 구축해서 설치해야 한다. 사용자 규모에 따라서는 웹 서버와 DB 서버를 서버 한 대에서 동작시킬 수도 있다. 

한 권으로 끝내는 네트워크 기초 129p

웹 애플리케이션 A를 SaaS로 제공하고 여러 회사에서 인터넷으로 이용하려면, 웹 서버는 인터넷에 공개하지만, DB 서버는 보안 관점에서 인터넷을 거치지 않고 웹 서버와 통신해야 한다.

또 SaaS로 제공하는 경우 사내에서 이용할 때보다 부하가 걸려 더 높은 가용성이 요구된다.

따라서 웹 서버는 한 대가 아니라 여러 대를 준비해서 서버에 집중되는 부하를 분배하거나, DB 서버도 여러 대에 동일한 데이터를 보유하여 데이터 손상이 일어나지 않도록 해야 한다.

한 권으로 끝내는 네트워크 기초 130p

이처럼 어떤 시스템을 만드는지 어느 정도 규모인지에 따라 필요한 네트워크 형태가 달라진다. 시스템 요구사항에 맞는 네트워크를 결정하고 만드는 것이 네트워크를 설계하고 구축할 때 중요하다고 할 수 있다.

 

6.1.2. 네트워크 설계와 구축(물리 인프라 편)

네트워크 설계의 각 프로세스는 시스템 설계와 크게 다르지 않다. 먼저 요건을 정의하고 어떤 시스템을 만들지, 그 시스템을 위해 어떤 네트워크를 만들지를 결정한 후 그 내용에 따라 기본 설계와 상세 설계를 한다.

기본 설계에서는 요건 정의에서 결정한 내용을 바탕으로 네트워크를 구축하면서 기본적인 사항을 정리한다. 상세 설계에서는 기본 설계에서 정리한 내용을 기반으로 '어떤 기기(서비스)를 사용하여 만드는가' 처럼 구현 방식의 세부 사항을 담는다. 이들 설계는 설계 리뷰를 거쳐 다듬은 후 구축 단계에 들어간다.

 

요건 정의 - 기본 설계 - 상세 설계 - 설계 리뷰

 

웹 애플리케이션 A를 SaaS로 제공하는 경우를 예로 들어 구축해보자.

현재 데이터 센터에 랙(전용 선반)을 빌리고 서버와 네트워크 장비를 구입하고 인터넷 회선도 계약한 상태이다. 대략 네트워크 구성을 정했으면 네트워크 구성도로 나타내본다. 

 

네트워크 구성도에는 물리 설계도와 논리 설계도가 있다. 물리 설계도에는 네트워크 기기가 포트별로 어디로 접속하는지와 기록한 포트 표나 랙의 어느 위치에 어떤 기기를 넣을지 기록한 랙 구성도, 케이블을 연결할 곳, 종류, 색 등 정보를 정리한 케이블 결선 표 등이 있다. 

물리 설계도에 따라 네트워크 기기와 서버를 랙에 마운트하고 네트워크 케이블이나 전원 케이블 등을 연결한다.

논리 설계도에서는 네트워크 회선의 랜간 라우팅이나 방화벽 규칙 설정, 어드레싱 등을 실시하고, 설계한 내용을 그림으로 나타낸다. 

한 권으로 끝내는 네트워크 기초 133p

현장에서 직접 랙에 마운트한 기기에 네트워크를 설정할 수 있고, 네트워크가 미리 설정된 기기를 데이터 센터에 보내고 현장에서는 동작만 확인하는 경우도 있다.

 

6.1.3. 네트워크 설계와 구축(클라우드 서비스 편)

이번에는 클라우드(IaaS)를 사용하여 같은 방식으로 네트워크를 구축해보자. AWS환경에서 구축하는 경우를 예로든다.

IaaS에서는 사업자가 제공하는 가상화 기반에 시스템을 구축한다. 서버와 네트워크 모두 가상으로 만들어진다. 물리 네트워크는 사람이 기기 설치나 초기 설정 등을 수작업으로 해야 하지만, 클라우드에서는 기기 설치를 대신하여 인스턴스(AWS에서는 가상 서버를 '인스턴스'라고 함) 생성, 초기 설정 같은 모든 작업을 웹 브라우저의 제어판에서 할 수 있다.

 

IaaS에서 시스템을 구축하는 흐름은 다음과 같다.

  1. 서브넷 생성
  2. 가상 서버 생성
  3. 보안 그룹 설정
  4. Elastic IP 설정

차례대로 살펴보자.

 

1️⃣ 서브넷 생성(퍼블릭 서브넷, 프라이빗 서브넷)

AWS에서는 서브넷 단위로 네트워크 세그먼트를 나누어 작성한다. 구체적으로는 인터넷에 공개한느 서버를 두는 서브넷(퍼블릭 서브넷)과 인터넷에 공개하지 않는 서버를 두는 서브넷(프라이빗 서브넷)을 생성한다.

가용성을 생각해서 각 서버를 가용 영역(availability zone)(데이터 센터에 해당) 2개로 나누어서 배치하고 각 가용 영역에 퍼블릭 서브넷과 프라이빗 서브넷을 2개씩 총 4개를 배피한다.

 

2️⃣ 가상 서버(인스턴스) 생성

AWS에서는 가상 서버를 인스턴스라고 한다. 여기에서는 EC2 서비스를 이용하여 웹 서버의 인스턴스를 생성한다. 또 RDS라고 하는 DB 서버 전용 인스턴스를 만들 수 있는 서비스도 있기 때문에 DB서버의 인스턴스는 이곳을 통해서 생성한다.

 

3️⃣ 보안 그룹 설정

AWS에는 보안 그룹이라는 서버에 연결하는 방화벽과 같은 것이 있다. 필요한 포트만 외부에서 보내는 통신을 통과하도록 작성해서 인스턴스에 할당한다.

 

4️⃣ Elastic IP설정

Elastic IP란 인스턴스에 결합하는 고정 글로벌 IP이다. 외부에 공개할 웹 서버 인스턴스로 설정한다. 

가상화 기반에 설정하는 것이므로 물리적인 작업이 발생하지 않는다. 설정 작업은 웹 브라우저에서 완결된다. 명령어나 정의 파일을 이용함으로써 정형화 및 자동화할 수도 있다.

 

클라우드는 매우 편리하지만, 물리적인 시스템의 네트워크 구조나 원리 원칙을 이해해야 더욱더 폭넓게 대응하는 엔지니어가 될 수 있다.

 

6.2. 웹 신뢰성을 높이는 기술

6.2.1. 웹 신뢰성이란?

시스템에 장애가 발생해도 서비스를 지속해서 제공하는 것이 중요하며, 이런 사고방식을 장애 대응 설계(design for failure)라고 한다.

- 로드 밸런싱(처리 분배)

 

6.2.2. 대칭 키 암호 방식과 공개 키 암호 방식

통신을 할 때 보내는 삶과 받는 사람 사이에서 누군가가 통신 내용을 도청할 수도 있다. 그래서 제삼자가 보더라도 알 수 없도록 암호화할 필요가 있다. 암호화된 것을 원래대로 되돌려서 읽을 수 있는 상태로 만들려면(복호화) 열쇠가 필요하다. 

암호화와 복호화 메커니즘에는 세 가지 방식이 있다.

 

1️⃣ 대칭 키 암호 방식

대칭 키 암호 방식이란 암호화와 복호화에 같은 키(대칭 키)를 이용하는 방식이다. 이 방식은 집 문을 여닫을 때 같은 키를 사용하는 것과 비슷하다. 파일 암호화 등에 자주 이용되는 방식으로, 프로세스는 아래와 같다.

 

1. 수신자가 발신자에게 키를 건네주고, 수신자도 같은 키를 가지고 있다.

2. 발신자는 암호 키로 암호화한 파일을 수신자에게 보낸다.

3. 수신자는 가지고 있던 같은 키로 파일을 복호화한다.

 

대칭 키 암호 방식의 문제점은 키를 안전하게 교환하기가 어렵다는 것이다. 

 

 

2️⃣ 공개 키 암호 방식(비대칭키 암호화 방식)

공개 키 암호 방식은 암호화와 복호화에 별도의 키를 사용하는 방식이다.

암호화에 사용되는 것은 공개 키, 복호화에 사용되는 것은 비밀 키라고 한다.

 

1. 수신자가 발신자에게 공개 키를 건네준다.

2. 발신자는 공개 키로 암호화한 파일을 수신자에게 보낸다.

3. 수신자는 비밀 키로 파일을 복호화한다.

 

이 방식은 공개 키로 암호화한 데이터를 복호화할 수 잇는 것은 비밀키를 가진 사람뿐이라는 것이 핵심이다. 키 교환이 간편하고, 암호화가 필요한 데이터를 처리하기 전에 키를 배포하고 취득할 수 있다.

 

3️⃣ 두 가지 방식을 함께 사용

웹 사이트 암호화에 사용되는 SSL/TLS 통신은 대칭 키 암호 방식과 공개 키 암호 방식을 함께 사용한다.

 

1. 클라이언트가 서버로 접속 요청

2. 서버가 클라이언트에게 공개키 제공

3. 클라이언트에서 통신용 대칭키를 생성

4. 생성된 대칭키를 서버의 공개키를 활용하여 암호화

5. 암호화된 공개키를 서버로 전송

6. 서버에서 비밀키로 복호화

7. 대칭키를 기반으로 암호 통신을 진행

 

SSL/TLS 통신을 시작할 때 서버가 클라이언트에 공개 키를 전달하는데, 인증 정보나 공개 키 정보를 하나로 모은 것이 SSL/TLS 서버 인증서 이다. 서버는 SSL/TLS 서버 인증서로 클라이언트에 인증 정보나 공개 키 정보를 세트로 건네주고, 클라이언트는 건네받은 SSL/TLS 서버 인증서로 접속 상대의 정보를 확인하고 통신한다. 

 

6.2.3. 상시 SSL화

상시 SSL/TLS 화란 웹 사이트 전체를 HTTPS화(암호화)하는 것이다. 보통 상시 SSL화라고 하는 경우가 많다.

실제 프로토콜은 SSL의 진화형인 TLS를 상요하지만, 일반적으로 알려진 용어가 SSL이므로 SSL/TLS를 단순히 SSL로 부른다.

 

이전에는 웹 사이트 전체를 암호화하려면 느려진다는 인식이 일반적이었으나, 최근에는 다음과 같은 이유로 상시 SSL화가 권장되는 추세이다.

 

1️⃣ HTTP/2에서는 표시 속도가 오히려 빨라진다.

HTTP/2 라는 새로운 프로토콜에서는 이전 HTTP 버전의 문제점이 개선되어 통신 효율이 높아졌다. 클라이언트와 서버 사이의 통신을 암호화하는 사양이 표준으로 정해져 있어 HTTP/2에 대응하려면 상시 SSL화가 필요하고, 이로써 응답 속도 향상을 기대할 수 있다.

 

2️⃣ SEO의 장점이 있다.

SEO(Search Engine Optimization)는 검색 엔진 최적화로 번역되며, 검색 결과에서 웹 사이트가 좀 더 상위에 표시되게 하는 일련의 대책을 SEO 대책이라고 한다. 오늘날 검색 엔진의 점유율은 구글이 앞도적으로 우위에 있으며, 구글에서는 상시 SSL화를 검색 결과의 평가 기준 중 하나로 삼고 있으며, SEO 대책의 일환으로 상시 SSL화가 되기도 한다.

 

3️⃣ HTTP일 때 웹 사이트를 열면 현재 웹 브라우저에 경고가 표시된다.

HTTP 웹 사이트를 열면 주소창에 '주의 요함'이라는 경고가 표시된다. 크롬 56부터는 HTTP 페이지에 ID나 패스워드 같은 기밀 정보를 입력하는 폼이 있을 때 보안 경고가 표시되었지만, 지금은 HTTP 웹 사이트 모두에서 경고가 표시된다. 

 

6.2.4. 부하 분산

웹 사이트의 내장애성이나 처리 능력을 높이고자 웹 서버 한 대가 아니라 여러대로 웹 사이트를 호스팅하기도 한다. 이 경우 액세스를 분산해서 할당하는 것을 부하 분산이라고 한다. 

 

DNS 서버 설정이나 전용 기기 및 소프트웨어의 도입, 서비스 등을 이용하여 부하 분산할 수 있다.

 

1️⃣ DNS 라운드 로빈

DNS 라운드 로빈은 DNS 시스템을 사용해서 요청을 서버 여러 개로 분산하는 방식이. 한 호스트 이름에 IP주소를 여러 개 설정함으로써 요청받은 DNS 서버는 차례대로 IP주소를 반환한다.

 

DNS 라운드 로빈은 특별한 장비나 소프트웨어를 쓰지 않고도 부하를 분산할 수 있다. 그러나 단점도 존재한다. 

DNS 서버가 각 서버를 모니터링해서 동적으로 할당하는 것은 아니기 때문에 다운된 서버의 IP를 반환하는 경우가 있다. 또 서버의 부하 상태와 상관없이 균등하게 할당되므로 처리 능력이 낮은 서버와 처리 능력이 높은 서버에 고르게 할당되면 퍼리 능력이 저하된 서버는 처리 한계에 도달할 가능성도 있다.

 

2️⃣ NAT형

NAT형이란 VIP라는 가상 IP 주소에 대한 요청을 실제 서버 여러 대에 할당하는 방식이다.

하드웨어/소프트웨어 등으로 제공되는 일반적인 로드 밸런서(L4 스위치/L7 스위치라고도 함)에서 채용된다.

3️⃣ GSLB

글로벌 서버 로드 밸런싱(Global Server Load Balancing)은 여러 위치를 가로지르는 부하 분산을 실현하는 방식이다. 

예를 들어 서울과 부산에 있는 데이터 센터에 서버를 설치하고 정상일 때는 양쪽 모두에 요청을 할당하고, 어느 한쪽에 장애가 발생했을 때는 장애가 일어난 데이터 센터 쪽 서버에는 할당하지 않게 하는 등 DNS 라운드 로빈에서 문제였던 '장애가 발생한 서버에도 할당할 수 있는 문제점'을 해결하였다.

 

이처럼 여러 서버에서 서비스를 제공함으로써 가용성과 성능을 향상시키거나 재해나 장애를 대비하는 등 부하 분산은 웹 사이트 신뢰성 향상에 연결된다.

 

6.2.5. 리버스 프록시

리버스 프록시란 웹 서버 대신에 클라이언트의 액세스를 받는 프록시 서버의 일종디ㅏ. 보통 웹 사이트와 동일한 네트워크에 설치된다.

프록시란 대리나 대행이라는 뜻으로, 프록시 서버는 클라이언트 쪽에 설치되어 클라이언트가 웹 서버에 액세스하는 것을 중계하는 역할을 한다. 즉 웹서버에 액세스 하는 것을 대행한다.

 

리버스 프록시는 서버 쪽에 설치되어 서버에 대한 요청을 받아 배후에 있는 서버에 넘겨주는 데 사용된다. 즉, 웹 서버가 받을 요청을 대신해서 받는다. 

프록시 서버와 리버스 프록시 서버는 모두 캐시 기능을 제공한다. 이미 요청이 있었던 것을 일정 시간 캐시해 두고, 캐시에 일치하는 것은 웹 서버 대신에 프록시 서버(리버스 프록시)가 응답한다. 이렇게 함으로써 웹 서버의 대한 부담을 줄일 수 있다. 

 

리버스 프록시는 캐시 기능 이외에도 부하 분산 기능, WAF7를 제공하여 웹 사이트의 신뢰성 향상에 기여한다.

 

6.2.6. CDN

CDN(Content Delivery Network)은 동일한 콘텐츠를 많은 배포처, 예를 들어 많은 사용자의 PC나 휴대 전화에 효율적으로 배포하고자 할 때 사용된다. 주로 웹 사이트에 있는 많은 이미지나 동영상 등 용량이 큰 데이터를 많은 서버와 네트워크 대역을 이용하여 클라이언트에 전달하는 데 사용된다. 또한 윈도우와 휴대 전화 운영 체제 업데이트 등도 CDN을 이용하여 효율적으로 전송할 수 있다.

 

배포처에 가까운 네트워크(커스터머 에지)에 콘텐츠를 배포하는 서버(에지 서버)를 배치해서 구성한다. 에지 서버는 원본 데이터를 가진 서버(오리진 서버)의 데이터 사본을 캐시로 가지고 있다가, 오리진 서버를 대신해서 클라이언트 요청에 응답한다.

 

사용자 가까이에 있는 서버에서 배포하고, 또 서버 여러 대에서 배포함으로써 더 빠르고 부하에 강한 시스템을 실현했다.

효율적인 배포 외에 DDos 공격에 대한 대책으로도 사용된다.

 

아래는 대표적인 CDN 서비스이다.

 

Akamai

엔터프라이즈급 CDN으로 유명하다. 

 

Amazon CloudFront

AWS 서비스 중 하나로 제공되는 CDN 서비스이다. 

 

Cloudflare

주로 개인용으로 무료 플랜이나 소액 플랜을 갖춘 것으로 알려진 CDN 서비스이다. CDN을 기본으로 하면서 보안이나 DDos 공격 대책에 사용한다.

 

Fastly

다른 CDN에서는 어렵다고 여기는 동적 콘텐츠 캐시 등 독자적인 기능을 제공하는 CDN 서비스이다.

 

Imperva Incapsula

CDN기능도 있지만, WAF, DDos 공격에 대응하는 측면으로도 강한 서비스이다.

728x90

🌐 5장. 인터넷 서비스의 기반

5.1. 클라우드와 네트워크의 관계

5.1.1. 클라우드와 네트워크

클라우드(클라우드 컴퓨팅)는 컴퓨터를 이용하는 형태 중 하나로, 인터넷 등 네트워크를 통해 서버가 제공하는 서비스를 주의 기기(컴퓨터, 휴대전화 등)를 통해 이용하는 것을 의미한다.

컴퓨터 세계에서 클라우드라는 단어는 복잡하게 연결되는 인터넷을 구름에 비유하여 표현하는데에서 시작되었다.

 

5.1.2. 클라우드의 종류

클라우드는 제공 범위에 따라 몇 가지로 분류된다. IaaS(Infrastructure as a Service)는 컴퓨터나 네트워크를 가상으로 만들어서 이용하는 형태이다. PaaS(Platform as a Service)는 데이터베이스나 애플리케이션을 실행할 수 있는 환경 등을 서비스로 제공하는 형태이다. IaaS와 조합해서 이용하는 경우도 많다. 

한 권으로 끝내는 네트워크 기초 113p

SaaS(Software as a Service)는 완제품 소프트웨어를 네트워크로 서비스하는 형태이다.

한 권으로 끝내는 네트워크 기초 114p

소프트웨어를 구입해서 이요할 때와 차이점은 아래 표와 같다.

구분 요금 체계 제공 범위 이용 방법 버전 업
패키지 소프트웨어 제품 구매 소프트웨어 사용권 컴퓨터에 소프트웨어 설치 새 버전 구매
SaaS 월 또는 연간 요금 소프트웨어 및 서비스 인터넷을 경유해서 이용 자동으로 업데이트

 

IaaS, Paas, Saas 차이점

5.1.3. 클라우드의 편의성

클라우드가 없던 시절에는 새로운 인터넷 서비스를 시작하려면 우선 서버로 사용할 컴퓨터를 사거나 빌려야만 했다. 그렇기에 초기 투자가 필요했고, 실제로 사용하기까지 시간이 걸렸다. 또한, 서비스가 확대되면 이에 맞춰 컴퓨터 자원을 확장시켜야 했으며 즉각적으로 늘릴 수도 없었다. 그리고 서비스를 중단하면 소유하던 컴퓨터가 남게된다. 

클라우드는 이러한 문제를 해결한다.

- 곧바로 사용한다 : 웹 브라우저에서 서버를 생성할 수 있고, 명령어로 자동화할 수도 있다.

- 사용한 만큼만 돈이 든다 : 초기 비용이 들지 않고 시간 단위로 과금된다.

- 쉽게 늘리고 줄일 수 있다 : 소유하지 않고 사용한다.

 

이처럼 '소유'에서 '이용'으로 변화함에 따라 편리함을 누릴 수 있게 되었다. 

 

5.2. 클라우드 서비스와 호스팅 하우징

5.2.1. 대표적인 클라우드 서비스

Amazon Web Services

아마존 웹 서비스(AWS, Amazon Web Service)는 아마존이 제공하는 클라우드 플랫폼(IaaS, PaaS)이다. 아마존은 매우 많은 서비스를 제공하는 것으로 유명하며, 그중에서도 대표적인 것은 EC2(가상 서버), S3(오브젝트 스토리지), RDS(관계형 데이터베이스 서비스) 등이다. 

 

Microsoft Azure/Microsoft 365

마이크로소프트 애저(Microsoft Azure)는 마이크로소프트가 제공하는 클라우드 플랫폼(IaaS, PaaS)이다. 또한 마이크로소프트는 애저 외에도 Microsoft 365라는 오피스 제품의 구독 서비스(SaaS)를 제공한다. 

마이크로소프트는 전통적으로 오피스 스위츠나 기업용 서버에 강하며, 애저와 Microsoft 365의 매출을 합산하면 클라우드 서비스의 매출이 세계 1위이다. 

 

Google Cloud Platform

구글 클라우드 플랫폼(GCP, Google Cloud Platform)은 구글이 제공하는 클라우드 플랫폼(IaaS, PaaS)이다. 구글 내부에서 사용하는 것과 동일한 서비스 플랫폼을 제공하는 것이 특징이다. 다른 클라우드 플래솦ㅁ과 마찬가지로 가상 서버나 객체 스토리지, 관계형 데이터베이스 서비스를 제공하는 한편, 쿠버네티스(Kubernetes)의 개발원이라는 점에서 컨테이너용 플랫폼 서비스에 강하다.

 

Firebase

파이어베이스(Firebase)는 2011년에 파이어베이스사가 개발한 서비스로, 2014년에 구글에 인수되어 현재 GCP 기능 중 하나로 자리잡았다. Mobile Backend as a Service(mBaaS)로 부르는 서비스로 데이터베이스, 스토리지, 메시징 등 모바일 애플리케이션에 필요한 기능을 서버로 의식하지 않고 사용할 수 있는 것이 특징이다.

 

Heroku

헤로쿠(Heroku)는 Platform as a Service(PaaS)로 웹 서버나 데이터베이스 같은 웹 서비스를 공개하는 데 필요한 모든 것을 미리 준비해 주는 서비스이다. 서버, OS, 데이터베이스, 프로그램 실행 환경 등 웹 애플리케이션을 공개하는 데 필요한 기능을 세트로 제공하는 것이 특징이다.

 

KT 클라우드

통신 사업자이자 데이터 센터 사업자인 KT의 클라우드 인프라 서비스는 가격면에서 경쟁력이 있다. 국내 클라우드 제공사 중 매출 규모가 가장 크고, 공공 기관 전용 클라우드 서비스인 G-클라우드를 출시하고 헌법 재판소 등 다수 공공 기관에 클라우드 서비스를 제공하며 사업 영역을 확대하고 있다.

 

네이버 클라우드 플랫폼

라인, 네이버 웹툰 등 자회사들이 네이버 클라우드 플랫폼을 이용하고 있고, SK텔레콤, LG U+등 대기업도 네이버 클라우드 플랫폼 서비스를 도입했다. 국내 사업자 중 최대 보안 인증을 확보하여 공공 기관 전용 서비스를 출시하는 등 일반 기업 이외에도 공공, 금융, 의료 분야로도 사업 영역을 확대하고 있다.

 

5.2.2. 호스팅, 하우징

호스팅은 호스팅 사업자가 서버를 보유하고 사용자에게 대여하는 서비스를 총칭한다. 호스팅에는 렌탈 서버, 전용 서버, VPS(Virtual Private Server)등이 있다. 

 

렌탈 서버는 물리 서버 한 대를 여러 사용자가 함께 사용하는 형태이다. 사용자들은 서버의 하드웨어 리소스뿐만 아니라 OS도 함께 사용한다. 이 때문에 렌탈 서버에서는 애플리케이션을 직접 설치할 수 없고, 렌탈 서버에서 제공하는 웹 서버나 애플리케이션이 동작할 수 있는 환경 및 데이터베이스를 이용한다. 각 사용자의 데이터는 논리적으로 분리되어 있어 다른 사용자의 데이터는 볼 수 없다.

 

전용 서버는 물리 서버 한 대를 점유할 수 있는 서비스이다. 한 대를 통째로 자신의 서버로 사용할 수 있으므로 다른 사용자의 부하 영향을 받지 않고 OS나 애플리케이션도 자유롭게 설치할 수 있다. 

 

VPS는 렌탈 서버와 전용 서버의 장점을 취한 서비스로, 물리 서버 한 대를 여러 사용자가 공용하지만 가상화 기술을 이용해서 가상 서버를 물리 서버 안에 많이 만들 수 있다. VPS에서 제공되는 환경은 전용 서버와 동일하고, OS 및 애플리케이션을 자유롭게 설치할 수 있다.

 

호스팅 서비스는 서비스 제공 사업자가 물리 서버의 하드웨어 유지 보수 및 운용을 한다. 

 

하우징은 데이터 센터 사업자가 랙(전용 선반)을 대여해 주고, 랙 안에 사용자가 직접 구매한 네트워크 기기나 서버 등을 탑재한다. 경우에 다라서는 사용자가 네트워크 회선을 끌어올수 있는 서비스도 있다.

 

5.3. 네트워크와 애플리케이션

5.3.1. 일반적인 웹 DB 시스템

대표적인 콘텐츠 관리 시스템(CMS, Content Management System)인 워드프레스 환경을 예로 들어 네트워크 애플리케이션이 어떻게 구성되는지 살펴보자.

워드프레스를 동작시키려면 웹 서버와 DB서버가 필요하다. 그리고 워드프레스는 PHP로 만들어졌기 때문에 PHP 실행 환경도 필요하다.

 

5.3.2. 구성하는 소프트웨어

OS

프로그램을 실행하려면 우선 기반이 되는 OS가 필요하다. OS에는 다음과 같은 것들이 존재한다.

 

윈도우(Windows)

마이크로소프트에서 개발한 OS로, 개인용 컴퓨터에서 압도적인 점유율 보유하며, 서버 용도로는 윈도 서버(Windows Server) 에디션이 있다.

 

리눅스(Linix)

리눅스는 주로 인터넷을 위한 서버 용도로 널리 사용되는 OS이다. 리눅스는 비영리 커뮤니티에서 개발한 것이 특징으로, 무료로 사용할 수 있는 배포판, 기업이 서비스를 제공하는 대신 라이선스를 사서 이용하는 배포판 등 여러 종류가 있다.

 

맥오에스(macOS)

애플에서 만드는 컴퓨터인 Mac 시리즈에 탑재되는 OS로 예전에는 서버 용도로 사용했지만, 현재는 일반 컴퓨터용으로만 사용한다.

 

웹 서버 소프트웨어

웹 서버는 OS에 웹 서버 소프트웨어를 설치하고 동작시켜 서버 기능을 한다. 웹 서버 소프트웨어로는 다음과 같은 것들이 있다.

 

아파치(Apache)

Apache의 정식 명칭은 Apache HTTP Server이지만, 보통 아파치라고 한다.

전 세계에서 가장 많이 사용하는 웹 서버 소프트웨어로, 대규모 상용 웹 사이트부터 개인용 서버까지 폭넓게 이용된다.

 

엔진엑스(Nginx)

아파치보다 나중에 생긴 웹 서버로, 동작이 빠르고 기능이 풍부하여 최근 들어 채요 사례가 증가하고 있다.

 

IIS(Internet Information Services)

마이크로소프트의 웹 서버 소프트웨어로, 윈도나 윈도 서버 위에서 동작한다.

 

DB 서버 소프트웨어

MySQL

MySQL은 세계에서 가장 널리 사용되는 오픈소스 RDBMS이다.

 

MariaDB

MySQL에서 파생된 소프트웨어로, MySQL과 독립적으로 계속 개발하고 있는 DB Server의 하나이다. 

 

오로라(Aurora)

AWS의 관계형 데이터베이스 서비스인 Amazon RDS 중에서 선택 가능한 RDBMS로, MySQL과 호환성을 강조하면서도 더 뛰어난 성능을 발휘하는 것이 특징이다.

 

PostgreSQL

오픈 소스 RDBMS이며, MySQL 다음으로 점유율이 높은 DB 서버 소프트웨어이다. PostgreSQL은 신뢰성을 중요시한다고 알려져 비웹 계열 시스템에서 채용하는 예도 많다.

 

Oracle

오픈 소스가 아닌 RDBMS로, RDBMS 시장 점유율이 가장 높은 상용 DB 서버 소프트웨어이다. 

 

프로그래밍 언어

PHP

동적 웹 페이지 생성 툴을 기원으로 한 프로그래밍 언어로 웹 애플리케이션 개발에 유용한 기능이 풍부하게 들어 있는 것이 특징이다.

 

Ruby

일본에서 개발된 프로그래밍 언어로, Ruby on Rails라는 웹 애플리케이션 프레임워크를 사용하여 복잡한 웹 애플리케이션을 개발한다.

 

ASP.NET

프로그래밍 언어가 아니라 웹 애플리케이션 프레임워크의 명칭이다. 비주얼 베이직(Visual Basic)이나 C# 등 주로 마이크로소프트가 제공하는 프로그래밍 언어를 사용할 수 있다.

 

어떤 OS, 어떤 웹 서버 소프트웨어, 어떤 DB 서버 소프트웨어, 어떤 프로그래밍 언어를 선택할지는 조건에 따라 달라진다. 

워드프레스는 DB서버 소프트웨어로 MySQL, 프로그래밍 언어로 PHP를 사용하므로 이 두가지는 고정되어 있다. 그러나 OS나 웹 서버 소프트웨어에 대해서는 특별히 정해진 바가 없다. 

시스템을 구축하고 운용하는 엔지니어가 보유한 스킬에 따라 선택하는 것이 일반적이다.

 

그 밖에 고려할 수 있는 요소는 비용이다. 상용 제품을 사용하는 WISA와 비교하면 LAMP, LEMP는 OSS를 사용하므로 비용을 절감할 수 있다. 

728x90

🌐 4장. 네트워크 장비의 종류

4.1. 연결을 위한 네트워크 장비

4.1.1. 라우터

라우터는 쉽게 말해서 네트워크와 네트워크를 연결하는 것이다. 가정이나 소규모 사무실의 라우터를 생각해보자. 가정이나 소규모 사무실에서 라우터는 컴퓨터 여러 대로 회선 하나를 함께 사용하는 기능을 제공한다.

컴퓨터를 인터넷 회선에 직접 연결하면 연결된 컴퓨터만 외부 네트워크에 접속할 수 있다. 라우터를 이용하면 여러 대의 컴퓨터는 물론, 휴대 전화나 태블릿 등도 인터넷 회선을 공용하여 외부 네트워크에 접속할 수 있다.

 

라우터에 연결할 때 유선 랜뿐만 아니라 무선 랜을 사용하는 경우도 있다.

회선으로 접속하는 외부 네트워크로 인터넷을 가장 쉽게 생각할 수 있다. 소규모 사무실도 거점이 많은 회사의 한 거점이 될 때는 다른 거점과 VPN으로 접속하기도 한다.

또 라우터에는 DHCP 서버기능이 있어 정해진 범위 안에서 컴퓨터에 IP 주소를 할당하여 충돌이 일어나지 않게 관리한다. 네트워크에 따라서는 DHCP 서버 기능을 사용하지 않고, 모든 IP를 수동으로 관리하는 경우도 있다.

 

4.1.2. 스위치

L7스위치는 응용 계층의 내용까지 해석해서 데이터를 배분한다. 특정 사용자와 서버의 연결(세션)을 유지하는 기능은 L7 스위치가 구현한다. 

 

4.2. 방어를 위한 네트워크 기기

4.2.1. 방화벽과 UTM

방어를 위한 네트워크 기기로 대표적인 것이 방화벽(firewall)이다. 방화벽은 네트워크가 연결되는 장소에서 통과시켜서는 안되는 통신을 차단하는 시스템이다.

방화벽이 발전한 형태가 UTM(Unified Threat Management)이다. UTM이란 방화벽, VPN, 안티바이러스, IDS/IPS, 콘텐츠 필터링, 안티스팸, 애플리케이션 컨트롤 등의 기능을 한 기기에서 한꺼번에 제공하는 것이다. 이를 시큐리티 어플라이언스 제품이라고도 한다.

 

나중에 나오는 WAF(Web Application Firewall)는 조금 성격이 다른 보안 제품이기 때문에 UTM에 포함되지 않는 경우가 많다.

** 콘텐츠 필터링은 데이터 손실을 방지하고자 특정 유형, 파일, 프로토콜 명령 등에 기반하여 트래픽을 차단한다.

 

방화벽 기능 자체는 지금도 유용하지만, 좀 더 다각적으로 위협에 대처하고자 UTM이 만들어졌다. 최근에는 통신을 애플리케이션 단위로 제어하는 기능을 가진 것도 있다.

 

예시

  • 웹 사이트와 사용자 속성에 근거한 통신 제어
    • 예) 마케팅 부서의 SNS에 대한 참조와 투고는 허가하고, 타 부서의 참조와 투고는 금지한다.
  • 웹 사이트와 행동에 근거한 통신 제어
    • 예) 웹 메일에서 파일 첨부를 금지한다.
  • 웹 브라우저를 사용하지 않는 HTTP/HTTPS 통신 제어
    • 채팅앱이나 파일 교환앱의 통신을 차단한다.

최근에는 많은 애플리케이션이 웹을 기반으로 동작하며, 웹 애플리케이션 이외에도 통신에 HTTP/HTTPS를 이용하는 사례가 증가한 것이 이런 기능이 등장한 배경이다. 따라서기존 프로토콜 기반의 패킷 필터링으로 할 수 없는 제어를 하여 보안을 강화할 필요가 있다.

 

4.2.2. WAF(Web Application Firewall)

WAF는 웹 사이트의 앞쪽에 배치하여 웹 사이트 및 웹 애플리케이션 등을 노린 공격을 방어하는 보안 대책이다.

WAF로 방어할 수 있는 주된 공격으로는 SQL 인젝션이나 XS, 패스워드 리스트 공격 등을 들 수 있다. WAF 종류에는 다음과 같은 것들이 있다.

 

어플라이언스 WAF

하드웨어 어플라이언스를 설치하는 형태의 WAF이다.

 

소프트웨어 WAF

서버에 소프트웨어를 설치하고 운영하는 형태의 WAF이다. (1)웹 서버에 직접 설치하고 운영하는 것과 (2)웹 서버와는 별도의 서버에 설치하여 리버스 프록시로 운영하는 것이 있다. 

 

클라우드형 WAF

클라우드 서비스로 제공되는 형태의 WAF이다. 웹 사이트에 대한 액세스는 일단 클라우드형 WAF를 경유하여 웹 서버에 도달한다.

 

WAF를 이용할 때 주의

모든 WAF에서 공통인 것은 도입할 때 사전 검증을 철저히 하는 것이다. 도입 후에도 애플리케이션이 정상적으로 동작하는지, 응답에는 문제가 없는지 등을 확인해야 한다.

 

4.2.3. IDS/IPS

IDS(Intrusion Detection System)(침입 탐지 시스템)와 IPS(Intrusion Prevention System)(침입 방지 시스템)는 네트워크에서 침입을 탐지하고 방지하는 데 이용되는 시스템이다. 모두 보호 대상에 대한 침입을 탐지하는 데 사용된다.

IDS는 '탐지'와 '통지'를 하고, IPS는 '탐지'와 '통지' 및 '방지'를 한다고 할 수 있다. 이 둘을 거의 구별하지 않고 IDS/IPS 처럼 병기하는 경우도 많다.

 

 

IDS/IP의 탐지 방법에는 시그니처(signature)형어노멀리(anormaly)형 두 종류가 있다.

시그니처형이란 알려진 공격 패턴 등 비정상적인 통신 패턴을 데이터베이스에 보관하고, 통신 내용이 일치하는 경우에 비정상으로 판단하는 탐지방법이다.

어노멀리형은 반대로 정상적인 통신 패턴을 데이터베이스에 보관하고, 통신 내용이 비정상이라고 의심되는 경우에 부정으로 판단하는 탐지 방법이다.

 

시그니처형은 비정상인 패턴을 매칭하므로 오탐지가 적지만, 데이터베이스에 등록되지 않은 알려지지 않은 부정 액세스 패턴은 탐지할 수 없는 단점이 있다.

어노멀리형은 미지의 공격도 어느 정도 탐지할 수 있다는 장점이 있지만, 시그니처형보다 오탐지가 많아진다는 단점이 있다.

 

4.2.4. 각각의 관계성

방화벽은 3계층/4계층 수준에서 방어하는 기본적인 보안 시스템이고, IDS/IPS는 좀 더 애플리케이션에 가까운 방어를 주로 하는 등 각각 특성이 다르다. 따라서 필요에 따라 같이 사용하는 것이 좋다.

  • 방화벽은 가장 기본적인 보안 시스템으로 반드시 사용한다.
  • IDS/IPS는 필요에 따라 이용 여부를 결정한다.

방어 대상이 웹 애플리케이션이라고 확실히 정해져 있다면 WAF를 병용하는 것도 고려한다.

 

4.3. 소프트웨어로 조작하는 네트워크

4.3.1. SDN

SDN(Software Defined Network)이란 소프트웨어를 이용하여 유연하게 정의할 수 있는 네트워크를 만드는 기술 혹은 그런 콘셉트를 의미한다.

물리적인 네트워크에서는 네트워크 기기나 서버를 추가하거나 네트워크 구성을 변경할 때 실제로 기기를 설치하거나 케이블을 꽂고 빼는 작업이 필요하다. 그리고 공유기와 스위치, 방화벽 등 설정도 각각 변경해야 한다.

SDN에서는  SDN컨트롤러라는 소프트웨어로 논리적인 네트워크를 한곳에서 집중 관리한다. 네트워크를 한곳에 모아서 관리하면 개별적으로 기기를 일일이 설정하지 않아도 되니 효율이 높아진다.

 

OpenFlow

SDN의 구체적인 구현으로 알려진 기술 중 하나가 바로 오픈프로(OpenFlow)이다. 기존 네트워크 기기에서는 경로 제어와 데이터 전송이 한 네트워크 장비로 구현되어 있다. 각각의 네트워크 기기가 설정에 따라 경로를 제어하고 데이터를 전송하면 부분적인 장애에 강하다는 장점이 있지만, 네트워크 전체에서 본 경로 선택이나 통합적인 관리가 어렵다는 문제점을 안고 있다.

 

오픈플로는 경로를 제어하는 오픈플로 컨트롤러와 실제 데이터를 전송하는 오픈플로 스위치로 구성되어 있으며, 네트워크를 전체적으로 보았을 때 경로 선택이나 통합적인 관리를 할 수 있다. 

오픈플로를 구현하는 방식에는 오버레이 방식과 홉 바이 홉 방식 두 종류가 있다.

 

오버레이 방식은 가상 서버를 오픈플로를 지원하는 가상 스위치와 연결하여 물리 서버를 걸친 가상 랜을 구성하는 것이다. 기존 네트워크 기기 등을 활용하면서 도입할 수 있다는 장점이 있지만, 네트워크 전체를 보았을 때 세밀하게 경로를 제어할 수 없다는 단점이 있다.

 

홉 바이 홉 방식은 네트워크 기기도 오픈플로를 지원하는 기기를 이용함으로써 오픈플로가 지향하는 전체 기능을 활용하는 것이 목표이다. 

 

4.3.1. SD-WAN

SD-WAN은 SDN을 랜뿐만 아니라 왠으로도 확대하려는 것이며, 소프트웨어로 자동화된 도입과 운용이 가능한 왠이다.

SD-WAN은 다음과 같은 세 가지 특징이 있다.

  • 소프트웨어로 집중 관리
  • 신규 거점 도입의 용이성
  • 가상화 기반이나 IaaS형 클라우드와의 친화성

기존 왠은 기기마다 설정하여 접속했지만, SD-WAN은 SDN과 마찬가지로 소프트웨어 컨트롤러로 집중적으로 관리하는 것이 목표이며, 단일 관리 화면에서 각종 설정을 할 수 있다. 또 새롭게 접속 거점을 추가할 때도 현장에 네트워크 엔지니어가 가지 않고 도입할 수 있다.

 

 

728x90

🌐 3장. 웹을 구현하는 기술

3.1 웹을 구성하는 구조

3.1.1. 웹과 네트워크

웹(web)은 World Wide Web(WWW)이라는 인터넷에서 제공되는 하이퍼텍스트 시스템이다. 인터넷이라는 표현은 흔히 웹을 가리키지만, 정확히 말해 웹은 인터넷의 한 기능일 뿐이다.

하이퍼텍스트란 문서 안에 다른 문서의 위치 정보를 포함시켜 정보를 서로 연관 지어(하이퍼링크) 참조할 수 있게 만든 문서이다. 이 개념을 인터넷상에서 실현한 것이 웹이다.

웹은 HTML로 대표되는 하이퍼텍스트 언어와 네트워크의 네트워크인 인터넷이 융합되어 탄생하였다.

 

당초에는 문자 정보만 주고받는 단순한 기술이었지만, 웹 서버에서 동작하는 애플리케이션이나 HTML 언어 자체의 사양이 확장되면서 이용 범위가 확대되었다. 지금은 전자상거래, 온라인 뱅킹, 게임, 동영상 서비스 등 다양한 용도로 활용된다.

3.1.2. 클라이언트와 서버

웹으로 제공되는 서비스 대부분은 서비스를 제공하는 쪽(서버)과 서비스를 받는 쪽(클라이언트)으로 나뉜다. 이를 클라이언트 서버 모델이라고 한다. 서버에 시스템을 설치하고 사용자는 클라이언트에서 서버에 액세스한다.

 

웹 서비스를 예시로, 서버는 그 역할의 성격상 유지 보수를 해야 하기 때문에 일시적으로 멈출 수 있지만, 기본적으로 언제든지 클라이언트 요구에 대응할 수 있도록 24시간 365일 가동해야 한다.

반면 클라이언트는 서비스를 이용할 때만 동작해야 한다. 사용하지 않을 때는 전원을 끌 수 있으며, 항상 동작하는 것은 아니다. 또 인간이 사용하므로 편의성이나 휴대성 같은 것을 고려해서 만들고 있다.

 

3.1.3. 웹 서버

웹은 클라이언트 서버 모델을 기반으로 하는 시스템으로, 정보 제공자가 웹 서버를 공개하고 사용자가 웹 브라우저를 통해 웹 서버에 있는 정보에 액세스 하는(브라우징) 형식을 기본으로 한다. 

웹 서버는 정보를 전송하거나 서비스를 제공하려고 365일 계속해서 동작하는 컴퓨터를 의미한다. 아파치(Apache)나 엔진엑스(Nginx)처럼 컴퓨터상에서 웹 서버 기능을 제공하는 구체적인 애플리케이션을 가리켜 웹 서버로 지칭할 때도 있으니 주의해야 한다.

 

웹 서버의 가장 기본적인 역할은 웹 페이지를 공개하는 것이다. HTML로 작성된 문서를 인터넷에 공개하는 역할을 담당한다. 웹 서버에서 애플리케이션을 실행할 수 있는 CGI(Common Gateway Interface) 기술로 인터넷에서는 정보를 양방향으로 교환하게 되었다. 현재는 서버 사이드 언어나 데이터베이스 등과 연계하여 웹에서 많은 일을 할 수 있게 되었다.

 

3.1.4. HTTP와 HTTPS

HTTP는 서버와 클라이언트 사이에서 데이터를 주고받는 프로토콜이다. 웹이 처음 만들어질 당시에는 정보 공유를 목적으로 한 시스템이었기 때문에 통신 경로에서 정보를 감출 필요가 없었다. 그러나 이용 범위가 확대되면서 웹 서버에 데이터를 전송할  때는 암호화하여 정보 기밀성을 확보할 필요가 생겼다. 그래서 만들어진 것이 HTTPS 프로토콜이다.

 

HTTPS는 SSL/TLS 구조로 구현되었다. SSL(Secure Sockets Layers)TLS(Transport Layer Security)는 인터넷에서 통신을 암호화하여 제삼자가 통신 내용을 훔쳐보거나 조작할 수 없게 하는 기술이다. 

SSL은 넷스케이프가 개발한 프로토콜이고, TLS는 SSL을 계승하여 IETF라는 표준화 조직의 TLS 워킹 그룹에서 책정한 프로토콜이다. 현재는 SSL 이 아닌 TLS가 사용되고 있어 TLS라고만 표기해도 되지만, 여전히 SSL 지명도가 높기 때문에 SSL/TLS로 병기하거나 그냥 SSL이라고 할 때도 많다.

 

3.1.5. SSL 인증서

SSL/TLS를 웹 사이트에서 이용하려면 SSL인증서가 필요하다. SSL 인증서란 인증 기관(CA, Certification Authority)이라는 신뢰할 수 있는 제삼자 기관이 이용자(도메인 소유자)에게 발행하는 것이다.

 

SSL 인증서의 역할

SSL인증서는 다음 세 가지 목적으로 이용한다.

  1. 데이터 암호화:
    • SSL 인증서에 포함되는 공개 키를 사용함으로써 암호화 통신을 위한 비밀키를 안전하게 교환할 수 있고, 암호화 통신을 실현할 수 있다.
  2. 도메인 소유 증명:
    • SSL 인증서로 해당 도메인은 A가 소유하는 도메인이라는 것을 제삼자인 인증기관에서 보증한다.
  3. 데이터 변조 방지:
    • 제삼자 기관이 보증하는 인증서로 암호화된 통신은 변조되지 않고 확실하게 A의 정보임을 보증한다.

 

인증 기관 신뢰

인증 기관은 인증 기관 운영 규정이라는 문서를 공개하여 보안 정책을 규정하고, 본사를 둔 국가의 정부 등이 이 문서를 인증함으로써 우리는 인증 기관을 신뢰할 수 있다.

인증 레벨에 따른 종류

SSL 인증서는 인증 레벨에 따라 도메인 인증(DV), 기업 인증(OV), EV인증(EV) 세 가지로 나눌 수 있다. 모든 인증서가 SSL/TLS을 이용한 암호화 통신 기능을 제공하지만, 인증서를 발행하는 조직이 실제로 있는지를 증명하는 범위에는 차이가 있다.

 

  • 도메인 인증(DV, Domain Validation)은 도메인에 등록된 등록자를 확인하고 발행하는 인증서이다. 도메인 소유만 확인할 뿐 도메인 및 인증서 소유자를 인증하는 것은 아니다. 발행 속도가 빠르고 가격이 저렴하여 개인 사이트뿐만 아니라, 기업체, 각종 미디어 등에 폭넓게 이용된다. 특히 개인정보나 신용 카드 정보 등 민감한 정보를 주고받지 않고, 검색 엔진 최적화(SEO, Search Engine Optimization) 이유로 항상 SSL을 적용해야 하는 웹 사이트에서 도메인 인증서를 많이 사용한다.
  • 기업 인증(OV, Organization Validation)은 도메인과 더불어 웹 사이트를 운영하는 조직의 실재성을 인증하는 인증서이다. 인증서 발행처가 운영 조직의 실재성을 인증하기 때문에 개인 정보나 신용 카드 정보 등 민감한 정보를 주고받는 웹 사이트 등에 이용된다.
  • EV 인증(EV, Extrended Validation)은 기업의 실재성과 더불어 소재지를 인증한다. 인증서로 웹 사이트 운영 조직을 확인할 수 있다. 기업의 실재성을 인증한다는 점에서 기업 인증(OV)과 같다고 생각할 수 있다. 그러나 소재지 확인 등 더욱 엄격한 심사를 거치고 시각적으로도 확인할 수 있어 개인 정보나 신용 카드 정보 등 민감한 정보를 주고받는 웹사이트와 온라인 뱅킹 및 금융 기관과 연계되는 핀테크(Fintech) 서비스를 제공하는 웹 사이트 등에 이용된다.
  도메인 인증 기업 인증 EV인증
암호화 통신 O O O
도메인 소유자 확인 O O O
조직의 실재성 확인 X O O
와일드카드 인증서 대응 O O X
발행 대상자 개인, 법인 법인 법인
가격 6,900원/년~ 49,000원/년 400,000원/년~
신뢰성 낮음 중간 높음
용도 1. 질문 폼이나 캠페인 응모 등 각종 폼
2. 개인 정보 입력은 하지 않는 웹 사이트의 상시 SSL화용

1. 개인 정보 입력이 필요한 회원제 사이트
2. 신용 카드 정보나 개인 정보 입력이 필요한 EC 사이트
1. 개인 정보 입력이 필요한 회원제 사이트
2. 신용 카드 정보나 개인 정보 입력이 필요한 EC 사이트
3. 기업 사이트, 온라인 뱅킹
장점 - 개인도 이용할 수 있음.
- 1년에 1만 원이 안되는 인증서도 있는 등 낮은 가격
- 신청에서 발행까지 속도가 빠름
- 조직 실재성을 증명
- 와일드카드 인증서를 발행할 수 있음.
- 조직 이름이 표시되어 사이트 신뢰성이 향상
단점 - 조직 실재성을 증명하지 않음 - 조직의 실재성을 증명하지만, 브라우저상 표시 기능이 없음 - 와일드카드 인증서를 발행할 수 없음
- 비교적 고가

 

3.1.6. URL과 DNS

 

URL

URL(Uniform Resource Locator)은 인터넷상에서 HTML이나 이미지 등 리소스 위치를 특정할 수 있는 서식으로 탄생했다. URL의 기본 서식은 스킴(프로토콜 + ://)과 서버 주소(또는 호스트 이름 + 도메인)에 다음 두 가지를 /로 연결한 것이다.

  • 디렉터리 이름
  • 파일 이름

 

DNS

웹 사이트 주소를 http://93.184.216.34/news/index.html처럼 IP 주소로 표기하면 기억하기 어렵다. 호스트 이름과 도메인으로 바꾸어 http://www.example.com/news/index.html로 변경하면 기억하기 쉽고 쓰기도 쉽다. 

하지만 인터넷에서는 반드시 IP주소로 접속할 대상을 지정하므로 www.example.com 이 사실을 조회하는 시스템이 필요하다. 이 시스템이 DNS(Domain Name System)이다.

 

DNS는 인터넷사의 거대한 분산 데이터베이스라고 할 수 있다. DNS는 콘텐츠 DNS서버캐시 DNS 서버 두 가지로 구성된다. 

콘텐츠 DNS 서버는 각 도메인의 바탕이 되는 기본 정보를 가지고 있고, 캐시 DNS 서버는 컴퓨터나 휴대전화 등 클라이언트가 문의하면 콘텐츠 DNS 서버를 찾아 정보를 요청한다. 캐시 DNS 서버는 콘텐츠 DNS 서버의 조회 결과를 바탕으로 클라이언트에 정보를 전달한다.

 

3.2. 도메인

도메인이란 인터넷상 주소로, 글로벌 IP주소를 가진 서버가 어디에 있는지 판단하는 정보로 이용된다. 글로벌 IP 주소가 있는 서버는 일반적으로 웹 사이트를 가리킨다. 

3.2.1. 도메인 관리 기관

도메인을 전 세계적으로 관리하는 곳은 ICANN이라는 비영리 단체이다. 그 밖에도 도메인을 다루는 조직으로 레지스트리레지스트가 있다.

레지스트리는 도메인 관리 기관으로, 각 도메인 정보의 데이터베이스를 관리한다. 레지스트리에 따라서 관리하는 도메인이 달라진다.

레지스트라는 도메인 중개 등록 업체로, 레지스트리가 관리하는 데이터베이스에 직접 도메인 정보를 등록할 수 있다. 도메인을 이용하려면 도메인 이름의 소유자가 누구인지, 어느 DNS 서버에서 관리되는지 같은 정보를 레지스트리 데이터베이스에 기록해야 한다. 이용자가 신청한 정보는 레지스트라를 경유하여 레지스트리의 데이터베이스에 기록된다.

도메인은 레지스트라가 판매하는 것 말고도 레지스트라의 대리점이 판매하는 예도 있다. 국내외로 많은 도메인 판매업자가 있는데 레지스트라가 직접 판매하기도 하고, 레지스트라에서 도메인을 도매로 받아 판매하는 대리점도 있다.

레지스트라는 레지트스리가 관리하는 데이터베이스에 직접 액세스 할 수 있지만, 대리점은 레지스트리가 관리하는 데이터베이스에 액세스할 수 없고 레지스트라를 통해서만 정보를 등록해야 한다.

 

3.2.2. 도메인 종류

도메인은 크게 두 종류로 나뉜다. gTLD(generic Top Level Domain)ccTLD(country code Top Level Domain)이다. 둘 다 ICANN이 관리하지만, 도메인 등록 업무 및 데이터베이스 관리 같은 실제 운영 업무는 레지스트리에 위임한다.

 

gTLD

gTLD는 전 세계에 등록이 개방된. com,. net,. org와 등록 제한이 있는. edu,. gov,. int,. mil 이렇게 일곱 가지 종류로 시작되었다. 2000년에. biz,. info,. name,. pro,. aero,. coop,. museum 일곱 가지 종류가 추가되었고, 2003년에는. asia,. cat,. jobs,. mobi,. post,. tel,. travel,. xxx가 추가되었다.

2012년부터는 새롭게 창설하는 gTLD 수에 제한을 두지 않고 기술적, 재무적 요건을 충족하는 조직이라면 신청이 가능해져 지금은 매우 많은 gTLD가 존재한다.

일반 이용자도 신청할 수 있는 gTLD 이외에 특정 기업이 전용으로 보유한 gTLD도 있다.

gTLD는 베리사인(Verisign)등의 회사가 레지스트리가 된다.

국내 ICANN인증 레지스트라로는 가비아, 예스닉, 후이즈 등이 있다.

 

ccTLD(국가 코드 최상위 도메인)

ccTLD는. kr,. us,. uk,. tv 등 전 세계에 200가지 이상이 있으며, 원칙적으로 그 나라에 사는 사람을 대상으로 한다. 하지만 어디까지나 원칙이며, 운영은 각국 네트워크 정보 센처(NIC)에 위임하여 다른 나라 사람에게도 도메인을 개방할 수 있다.

대한민국의 ccTLD는. kr이며, 한국인터넷진흥원(KISA)이 레지스트리로서 운영하고 있다.

. kr의 레지스트라는 가비아, 아이네임즈, 후이즈 등이 있다.

 

3.2.3. DNS 전환

시스템 전환 작업이나 서버 교체 등 IP 주소가 변경되는 사례는 많이 있다. 이때 DNS 설정도 함께 변경해야 한다.

www.example.com의 IP 주소가 203.0.113.1인 상태가 198.51.1090.1인 상태로 변경해야 하는 경우를 생각해 보자.

 

원본이 되는 정보는 콘텐츠 DNS 서버가 가지고 있지만, 인터넷상에 여러 개 존재하는 DNS 서버에도 복사된 정보가 있다. (가지고 있지 않은 경우도 있다.) 그리고 캐시 DNS 서버는 한 번 문의한 DNS 정보를 캐시로 보관해 둔다.

 

캐시 DNS 서버에서 캐시가 사라지고 새로운 정보를 다시 취득할 때 시차가 생긴다. DNS 정보는 스위치처럼 바로 전환할 수 있는 것은 아니고, 새로운 정보가 구석구석 도달하기까지 시간이 걸린다. 원래대로 되돌릴 때도 동일하기 때문에 서버 전환에 실패하고 다시 되돌릴 때도 마찬가지로 시차가 발생한다.

 

3.3. HTTP와 웹 기술

3.3.1. HTTP

HTTP는 웹 브라우저와 웹 서버 간의 상호 작용을 지원하는 프로토콜이다. HTTP는 데이터를 요청하는 HTTP 요청과 그에 응답하여 데이터를 보내는 HTTP 응답이라는 두 가지 상호 작용을 반복하여 웹 페이지를 표시한다.

 

HTTP 요청에는 하고 싶은 처리를 나타내는 메서드 이름과 대상 이름이 포함된다.

  • GET: 리소스를 가져오도록 웹 서버에 요청
  • POST: 웹 서버에 데이터를 송신
  • PUT: 웹 서버에 파일을 업로드

HTTP 응답에는 처리 결과를 나타내는 상태 코드와 헤더, 실제 처리 결과인 메시지가 포함된다.

상태 코드 결과 문구 설명
200 OK 요청이 성공했고, 응답과 함께 요청에 따른 정보가 반환된다.
403 Forbidden 금지, 액세스 거부, 액세스 권한이 없는 웹 페에지에 접근하는 경우 등 반환된다.
404 Not Found 미검출, 웹 페에지를 찾지 못했을때
408 Request Timeout 요청 시간이 초과, 요청이 시간 내에 처리되지 않은 경우 반환
410 Gone 소멸, 리소스가 영구적으로 이동하거나 소멸한다. 웹 페이지가 없어진 것을 대외적으로 나타내는 데 이용한다.
500 Internal Server Error 서버 내부 오류, 서버에서 실행 중인 프로그램을 실행하는 데 오류가 발생한 경우 등 반환
503 Service Unavailable 서비스 이용 불가. 일시적으로 과부하 또는 유지 보수로 서비스를 이용할 수 없다. 접속이 몰려 처리 불능에 빠졌을 경우 반환

 

3.3.2. 쿠키와 세션

세션은 웹 사이트를 방문해서 수행하는 일련의 행동이다. HTTP는 데이터를 요청하고 전송하는 상태 비저장 프로토콜이다. 사용자의 '상태'의 관한 정보를 알기 위해 사용하는 것이 쿠키(Cookie)이다. 쿠키란 웹 사이트를 열람한 사용자 정보를 클라이언트가 보관하고, 두 번째 액세스부터는 그 정보를 클라이언트가 서버로 보낸다. 이렇게 하면 다시 방문할 때 사용자를 식별할 수 있어 사용자의 브라우징 특성에 맞는 광고를 제공하거나 사이트 기능에 대한 설정을 저장하여 웹 사이트의 편의성을 높일 수 있다.

 

세션을 실현하려면 웹 사이트에 접속할 때 세션 ID라는 고유 ID가 할당되어야 한다. 세션 ID를 이용하여 사용자가 누구인지 식별하고, 제품을 추가하는 등의 정보는 세션 ID에 대응하는 세션 변수에 기록된다. 쿠키에 세션 정보를 기록하고, 실제 값(세션 변수 정보)은 서버 측에서 관리하는 방법이 널리 이용된다.

 

3.3.3. 인증

인증은 컴퓨터나 시스템을 사용할 때 필요한 본인 확인 절차이다. 시스템을 사용할 때 제삼자가 마음대로 사용하거나 제삼자에게 보이지 않도록 하는 인증이라는 메커니즘이 필요하다.

웹에서 인증은 개인 정보를 바탕으로 서비스를 이용하는 것이다. ID와 암호로 인증하는 것이 대부분이지만, 최근에는 다요소 인증(MFA) 이라고 하는 ID와 암호 이외에 일시적으로 발행되는 일회용 패스워드(one-time password)를 입력하는 인증 방식도 있다. 인증 요소를 늘리면 보안이 강화된다. 일회용 패스워드에는 휴대전화 SMS 전송, 전용 일회용 패스워드 생성 소프트웨어 사용, 물리적 하드웨어 토큰 기계에 표시된 암호 등 여러 종류가 있다. 

특정 서비스의 자격 증명을 사용하여 다른 서비스에 로그인할 수 있는 위임 인증 메커니즘도 있다. 이 방식에서 사용되는 기술이 OAuth이다.

 

기업 시스템의 예

한때 기업의 사내 시스템은 시스템마다 ID와 암호 데이터베이스를 가지고 있는 것이 대부분이었다. 그러나 최근에는 Active DirectoryLDAP라는 인증 기반과 연계되어 ID와 암호 하나만 있으면 사내의 어떤 시스템에도 로그인할 수 있다. 물론 시스템마다 권한에 따라 접근을 제한할 필요가 있다.

 

3.3.4. 새로운 기술: HTTP/2, Ajax, Web API

HTTP/2

HTTP/2는 HTTP의 새로운 규격이다. HTTP의 메이저 버전업으로 기획된 프로토콜로, 그 기반은 구글이 중심이 되어 개발한 SPDY 프로토콜이다.

HTTP/1.1 에서는 동시에 복수의 요청을 보낼 수 있지만, '요청 하나에 응답 하나'라는 기본 구조는 그대로이다. 그래서 HTML 파일 하나와 이미지 파일 여러 개로 구성된 웹 페이지를 표시할 때도 파일 하나마다 GET 요청을 보내야 한다. 이를 포함하여 HTTP/1.1 사양에는 아래와 같은 문제점이 있었다.

  • 한 번에 파일 하나밖에 가져올 수 없다: JS, CSS, 이미지 파일 등 많은 리소스를 이용하는 HTML을 로딩하는 데 시간이 걸린다. 
  • 프로토콜이 텍스트 기반이다: 텍스트 파일(프로그램에서 다룰 수 있는 데이터로 변환)에 시간이 걸린다.
  • 파일을 가져올 때마다 거의 같은 HTTP 헤더를 송수신한다: 같은 내용을 송수신하는 만큼 오버헤드가 커진다.

이런 문제점을 받아들여 HTTP/2는 HTTP와 호환성을 유지하면서 새로운 전송 수단을 제공하여 기존 문제점을 해결하고 좀 더 적은 통신량으로 더 신속하게 주고받을 수 있도록 설계되었다.

HTTP/2는 커넥션 하나로 복수 콘텐츠를 병렬로 전송할 수 있어, HTTP/1.1 보다 효율이 높은 프로토콜이 되었다.

HTTP/2로 웹 콘텐츠를 전달하려면 SSL/TLS가 꼭 필요하다고 할 수 있다.

 

Ajax

웹의 편의성을 높인 것으로 알려진 Ajax라고 하는 프로그래밍 기법이 있다.

Ajax는 이미 읽은 웹 페이지에서 다시 HTTP 요청을 보내 웹 페이지 전환 없이 데이터를 송수신할 수 있는 기능을 제공하는 XMLHttpRequest 기술을 사용한다. 

또 XMLHttpRequest로 비동기 통신은 구현할 수 있지만 서버 측에서 푸시 통신을 하는 등 양방향 통신은 어려웠는데, 이를 해결하기 위해 웹소켓(Websocket)이라는 기술도 탄생했다.

 

Web API

최근에는 각사의 웹 애플리케이션 기능이 Web API로 제공된다. Web API는 사용자 조작과 상관없이 어떤 웹 애플리케이션에서 다른 웹 애플리케이션을 조작할 수 있는 인터페이스이다.

728x90

+ Recent posts