top of page

Technical Skills 시스템디자인과 관련 개념

2024.06.02

Technical Skills 시스템디자인과 관련 개념

안녕하세요

북미 개발자 취업 컨설팅 드로우드림입니다!


이번 글에서는 시스템 확장에 대한 개념과

시스템 확장을 요청받는 과정에서 필요한

지연시간과 처리량 개념에 대해 알아보겠습니다. 


시스템이 성장함에 따라 성능이 저하되는 상황은 흔한 문제입니다. 

이에 대응하여 시스템을 조정하는 것은 매우 중요합니다. 

우선, 확장성은 시스템이 부하가 증가함에 따라 리소스를 추가하여 처리할 수 있는 능력을 의미합니다. 

즉, 성장하는 작업 부하를 지속적으로 지원할 수 있는 시스템이 확장 가능한 시스템입니다.


시스템의 확장은 여러 차원에서 이루어질 수 있는데

이번 글에서는 5가지의 시스템 확장 유형에 대해 알아보도록 하겠습니다. 


1. 사용자 기반의 성장: 시스템을 사용하는 사용자 수가 증가함에 따라 시스템으로 들어오는 요청이 증가합니다. 이는 시스템의 인프라와 리소스에 부하를 줄 수 있습니다.

   

   예: 소셜 미디어 플랫폼이 새로운 사용자를 유입할 때나 온라인 서비스의 인기가 증가할 때 발생합니다.


2. 기능의 성장: 시스템에 새로운 기능이 추가되면 시스템의 복잡성이 증가하고 새로운 요구 사항이 발생합니다. 새로운 기능이나 기능의 확장은 사용자 경험을 향상시키고 시스템의 유용성을 증가시킬 수 있습니다. 

   

   예: 전자 상거래 웹 사이트가 새로운 결제 방법을 지원하도록 추가하는 경우


3. 데이터 양의 성장: 사용자 활동이나 로깅으로 인해 시스템이 저장하고 관리하는 데이터 양이 증가합니다. 데이터 양의 증가는 데이터베이스 및 데이터 저장 시스템의 용량과 성능에 영향을 줄 수 있습니다.


   예: YouTube와 같은 비디오 스트리밍 플랫폼에서는 계속해서 새로운 비디오 콘텐츠가 업로드되고 사용자 활동이 기록되기 때문에 데이터 양이 계속해서 증가할 수 있습니다.


4. 복잡성의 성장: 시스템이 성장함에 따라 새로운 기능이나 통합이 추가되면 시스템의 아키텍처와 구성 요소의 복잡성이 증가할 수 있습니다. 복잡성의 증가는 시스템의 유지 보수 및 관리를 어렵게 만들 수 있습니다. 


   예: 간단한 응용 프로그램으로 시작한 시스템이 더 작고 독립적인 시스템으로 분할되는 경우


5. 지리적 확장: 시스템이 새로운 지역이나 국가의 사용자에게 서비스를 제공하기 위해 확장될 때 발생합니다. 지리적 확장은 새로운 인프라 및 네트워크 요구 사항을 도입하고 사용자들 간의 통신을 지원하는데 필요한 추가적인 작업을 의미합니다.


   예: 전자 상거래 회사가 새로운 국제 시장에 진출하여 웹 사이트와 배포를 확장하는 경우


이러한 다양한 측면에서 시스템의 성장을 고려하여 시스템 디자인을 수립하고 구현하는 것이 중요합니다. 

이를 통해 시스템이 변화에 대응하고 확장 가능한 구조를 갖출 수 있습니다.


시스템을 확장하는 방법은 다음과 같습니다.


1. 수직 확장(업 스케일링): 기존 서버에 더 많은 전원을 추가하여 서버를 업그레이드하는 것을 의미합니다. 간단한 아키텍처에 적합하지만 얼마나 멀리 갈 수 있는지에는 제한이 있습니다.


2. 수평 확장(스케일 아웃): 시스템에 더 많은 기계를 추가하여 작업 부하를 여러 서버에 분산하는 것을 의미합니다. 대규모 시스템의 경우 가장 효과적인 확장 방법으로 간주됩니다.


3. 부하 분산: 트래픽을 여러 서버에 분산하여 단일 서버가 과부하가 걸리지 않도록 하는 프로세스입니다.


4. 캐싱: 빈번하게 액세스되는 데이터를 메모리(예: RAM)에 저장하여 서버 또는 데이터베이스의 부하를 줄입니다. 캐싱을 구현하면 응답 시간이 크게 개선될 수 있습니다.


5. 콘텐츠 전송 네트워크(CDN): 정적 자산(이미지, 비디오 등)을 사용자에게 더 가깝게 배포합니다. 이렇게 하면 대기 시간이 줄어들고 로드 시간이 빨라집니다.


시스템 확장을 요청받는 다양한 유형 중 사용자가 늘어나고 이에 따라 처리해야하는 데이터의 양이 늘어나는 경우가 있을텐데요. 이 과정에서 많이 언급되는 것이 바로 “Throughput”과 “Latency” 즉 “처리량"과 “지연시간”일 것입니다. 

앞선 시스템 확장 유형과 방법에 이어 처리량과 지연시간에 대한 차이점과 이를 파악해야하는 중요성에 대해 알아보겠습니다.



Latency vs Throughput

Throughput

시간당 처리량을 의미합니다. 웹 애플리케이션 성능 지표로서의 Throughput의 대표적인 예는 다음과 같습니다.

  • 1초에 처리하는 HTTP 요청 수 (rps)

  • (동영상 스트리밍 서비스와 같이 대역폭이 중요한 경우) 네트워크로 전송되는 데이터 전송 속도


Latency

처리 시간을 의미합니다.

사용자가 어떤 웹페이지를 보기 위한 Latency는 사용자의 인터넷 환경, 브라우저 등의 개별 환경에 대한 변수가 존재합니다. 즉, "네트워크를 통한 데이터 왕복 시간"도 포함합니다. 그러나 성능 테스트를 진행할 때에는, 사용자 환경에 따른 변인을 통제하거나, 애초에 네트워크 상황을 고려하지 않고 테스트를 진행합니다. 이후 언급하는 Latency는 네트워크 상황을 고려하지 않은 시스템이 요청을 받고 응답을 줄 때까지의 시간만을 의미할 것입니다.



처리량과 지연 시간의 차이점은 무엇인가요?

지연 시간 및 처리량은 컴퓨터 네트워크의 성능을 측정하는 두 가지 지표입니다. 지연 시간은 네트워크 통신의 지연입니다. 네트워크를 통해 데이터를 전송하는 데 걸리는 시간을 보여줍니다. 지연이나 랙이 길게 발생하는 네트워크는 지연 시간이 길고, 응답 시간이 빠른 네트워크는 지연 시간이 짧습니다. 반면에 처리량은 특정 시간 동안 실제로 네트워크를 통과할 수 있는 평균 데이터 양을 가리킵니다. 이는 목적지에 성공적으로 도착한 데이터 패킷의 수와 데이터 패킷 손실을 나타냅니다.


처리량과 지연 시간이 중요한 이유는 무엇인가요?

네트워크가 데이터 패킷을 대상으로 전송할 수 있는 속도를 확인하여 네트워크 속도를 결정할 수 있습니다. 이 속도는 지연 시간 및 처리량과 같은 네트워크 성능 요인의 결과입니다.

지연 시간에 따라 사용자가 네트워크에서 데이터를 보내거나 받을 때 지연을 경험하게 됩니다. 처리량에 따라 네트워크에 동시에 액세스할 수 있는 사용자 수가 결정됩니다. 

처리량이 적고 지연 시간이 긴 네트워크는 많은 양의 데이터를 전송 및 처리하는 데 어려움을 겪으며 이로 인해 정체가 발생하고 애플리케이션 성능이 저하됩니다. 반대로 처리량이 많고 지연 시간이 짧은 네트워크는 반응성이 뛰어나고 효율적입니다. 사용자는 향상된 성능과 향상된 만족도를 경험하게 됩니다.

고성능 네트워크는 수익 창출과 운영 효율성에 직접적인 영향을 미칩니다. 또한 실시간 스트리밍, 사물 인터넷(IoT) 데이터 분석, 고성능 컴퓨팅과 같은 특정 사용 사례에서는 최적으로 작동하기 위해 특정 네트워크 성능 임계값이 필요합니다.


주요 차이점: 네트워크 지연 시간과 처리량

지연 시간과 처리량은 모두 안정적이고 빠른 네트워크에 기여하기는 하지만 서로 같지는 않습니다. 이러한 네트워크 지표는 고유한 통계에 초점을 맞추며 서로 다릅니다.


측정 방법

핑 시간을 측정하여 네트워크 지연 시간을 측정할 수 있습니다. 이 프로세스에서는 작은 데이터 패킷을 전송하고 해당 패킷이 도착했다는 확인을 받습니다.

대부분의 운영 체제는 디바이스에서 이 작업을 수행하는 ping 명령을 지원합니다. 왕복 시간(RTT)은 밀리초 단위로 표시되며 네트워크에서 데이터를 전송하는 데 걸리는 시간을 알려줍니다.  

네트워크 테스트 도구를 사용하거나 수동으로 처리량을 측정할 수 있습니다. 처리량을 수동으로 테스트하려면 파일을 전송하고 도착하는 데 걸리는 시간으로 파일 크기를 나누면 됩니다. 그러나 지연 시간과 대역폭은 처리량에 영향을 미칩니다. 이 때문에 많은 사람들이 네트워크 테스트 도구를 사용합니다. 도구가 대역폭 및 지연 시간과 같은 다른 요인과 함께 처리량을 보고하기 때문입니다.


측정 단위

지연 시간을 밀리초 단위로 측정합니다. 밀리초 단위의 숫자가 낮으면 네트워크에서 약간의 지연만 발생하는 것입니다. 밀리초 단위의 숫자가 클수록 네트워크 성능이 느려집니다. 

원래는 네트워크 처리량을 초당 비트 수(bps)로 측정했습니다. 그러나 데이터 전송 기술이 발전함에 따라 이제 훨씬 더 높은 가치를 달성할 수 있습니다. 따라서 초당 킬로바이트(KBps), 초당 메가바이트(MBps), 심지어 초당 기가바이트(GBps) 단위로 처리량을 측정할 수 있습니다. 1바이트는 8비트와 같습니다. 


지연 시간과 처리량에 영양을 미치는 요인
1.위치

가장 중요한 요소 중 하나는 데이터가 시작되는 위치와 의도된 목적지입니다. 서버가 장치와 지리적으로 다른 지역에 있는 경우 데이터가 더 멀리 이동해야 하므로 지연 시간이 길어집니다. 이 요인을 전파라고 합니다.


2.네트워크 정체

네트워크 정체는 네트워크를 통해 많은 양의 데이터가 전송될 때 발생합니다. 네트워크의 트래픽이 증가하면 패킷이 목적지까지 가는 경로가 길어집니다. 


3.프로토콜 효율성

일부 네트워크에는 보안을 위해 추가 프로토콜이 필요합니다. 추가 핸드셰이크 단계로 인해 지연이 발생합니다. 


4.네트워크 인프라

네트워크 장치가 과부하되어 패킷이 손실될 수 있습니다. 패킷이 지연되거나 손실되면 디바이스에서 패킷을 재전송합니다. 이로 인해 지연 시간이 늘어납니다. 


5.대역폭

네트워크 용량이 전송 매체의 최대 대역폭에 도달하면 처리량이 해당 제한을 초과할 수 없습니다. 


6.처리 능력

특정 네트워크 디바이스에는 처리 성능을 향상시키는 특수 하드웨어 또는 소프트웨어 최적화가 있습니다. 몇 가지 예로는 전용 애플리케이션별 집적 회로 또는 소프트웨어 기반 패킷 처리 엔진이 있습니다.

이러한 최적화를 통해 디바이스는 더 많은 양의 트래픽과 더 복잡한 패킷 처리 태스크를 처리할 수 있으므로 처리량이 향상됩니다.


7.패킷 손실

패킷 손실은 네트워크 정체, 하드웨어 결함 또는 잘못 구성된 네트워크 디바이스 등 다양한 이유로 발생할 수 있습니다. 패킷이 손실되면 다시 전송해야 합니다. 이로 인해 지연이 발생하고 네트워크의 전체 처리량이 감소합니다.


8.네트워크 토폴로지

네트워크 토폴로지는 네트워크 디바이스의 수, 네트워크 링크의 대역폭, 네트워크 경로의 디바이스 간 거리를 나타냅니다.

잘 설계된 네트워크 토폴로지는 데이터 전송을 위한 다중 경로를 제공하고 트래픽 병목 현상을 줄이며 처리량을 증가시킵니다. 디바이스가 더 많거나 거리가 더 긴 네트워크에서는 많은 처리량을 달성하기 위해 복잡한 네트워크 토폴로지가 필요합니다.

.

대역폭, 지연 시간, 처리량 간의 관계

지연 시간과 처리량이 함께 작용하여 뛰어난 네트워크 연결성과 성능을 제공합니다. 둘 다 데이터 패킷 전송에 영향을 미치므로 서로에게도 영향을 줍니다.

네트워크 연결 시 지연 시간이 길면 데이터 전송 및 도착 시간이 더 오래 걸리기 때문에 처리량이 적어질 수 있습니다. 처리량이 적으면 대량의 데이터가 도착하는 데 시간이 더 오래 걸리기 때문에 네트워크의 지연 시간이 긴 것처럼 보일 수도 있습니다.

서로 밀접하게 연결되어 있으므로 높은 네트워크 성능을 달성하려면 지연 시간과 처리량을 모두 모니터링해야 합니다. 


대역폭 및 네트워크 처리량

대역폭은 네트워크를 통해 전송할 수 있는 총 데이터 양을 나타냅니다. 총 대역폭은 네트워크를 통해 전송할 수 있는 이론상 최대 데이터 양을 나타냅니다. 초당 메가바이트(MBps) 단위로 측정합니다. 대역폭은 네트워크의 이론상 최대 처리량이라고 생각하면 됩니다. 

대역폭은 전송할 수 있는 데이터의 양이고, 처리량은 실제 네트워크 제한에 따라 특정 순간에 전송할 수 있는 실제 데이터 양입니다. 큰 대역폭은 속도나 우수한 네트워크 성능을 보장하지 않지만 대역폭이 클수록 처리량이 많아집니다.


그렇다면 지연 시간과 처리량을 어떻게 개선할 수 있을까요?

지연 시간을 개선하려면 소스와 대상 간의 전파를 줄입니다. 전체 네트워크 대역폭을 늘려 처리량을 개선할 수 있습니다.


1.캐싱

네트워킹에서의 캐싱은 자주 액세스하는 데이터를 사용자와 지리적으로 가까운 곳에 저장하는 프로세스를 말합니다. 예를 들어 프록시 서버나 콘텐츠 전송 네트워크(CDN)에 데이터를 저장할 수 있습니다.

네트워크는 원래 소스에서 데이터를 검색해야 하는 경우보다 훨씬 빠르게 캐시된 위치에서 데이터를 전송할 수 있습니다. 그리고 사용자가 데이터를 훨씬 빠르게 수신하므로 지연 시간이 단축됩니다. 또한 캐시에서 데이터를 검색하므로 원본 소스의 부하가 줄어듭니다. 이를 통해 한 번에 더 많은 요청을 처리할 수 있어 처리량이 향상됩니다.


2.전송 프로토콜

특정 애플리케이션에 사용하는 전송 프로토콜을 최적화하여 네트워크 성능을 개선할 수 있습니다.

예를 들어 TCP와 UDP는 일반적인 두 가지 네트워크 프로토콜입니다. TCP는 연결을 설정하고 오류 없이 데이터를 수신하는지 확인합니다. 패킷 손실을 줄이는 것이 목표이기 때문에 TCP는 지연 시간이 더 길고 처리량이 더 많습니다. UDP는 패킷 손실이나 오류를 검사하지 않고 대신 여러 개의 중복 패킷을 전송합니다. 따라서 지연 시간은 최소화되지만 처리량은 더 많습니다.

사용 중인 애플리케이션에 따라 TCP와 UDP 중에서 더 적합한 것을 선택할 수 있습니다. 예를 들어 TCP는 데이터 전송에 유용하고 UDP는 비디오 스트리밍 및 게임에 유용합니다.


3.서비스 품질

서비스 품질(QoS) 전략을 사용하여 네트워크 성능을 관리하고 최적화할 수 있습니다. QoS를 사용하면 네트워크 트래픽을 특정 범주로 나눌 수 있습니다. 각 범주에 우선 순위 수준을 할당할 수 있습니다.

QoS 구성은 지연 시간에 민감한 애플리케이션의 우선 순위를 지정합니다. 일부 애플리케이션 및 사용자는 다른 애플리케이션보다 지연 시간이 짧습니다. 또한 QoS 구성은 유형별로 데이터의 우선 순위를 지정하여 패킷 손실을 줄이고 특정 사용자의 처리량을 늘릴 수 있습니다.



오늘은 시스템 확장에 대한 개념을 알아보고

처리량, 지연시간의 차이점에 대해 비교해보았습니다.

비슷한 듯, 다른 두 개념을 정확하게 파악하고 

시스템 확장에 적용할 수 있도록 하는데에

도움이 되었으면 좋겠습니다!



bottom of page