EP190: Cloudflare vs. AWS vs. Azure
이번 주 시스템 설계 복습:
-
Cloudflare vs. AWS vs. Azure
-
인기 있는 Backend 기술 스택
-
HTTP vs. HTTPS
-
Forward Proxy vs. Reverse Proxy
-
Concurrency는 Parallelism이 아닙니다
Cloudflare vs. AWS vs. Azure
Cloudflare는 단순한 CDN과 DDoS 방어 서비스 그 이상입니다. Cloudflare, AWS, Azure를 간단히 비교해보겠습니다.

Cloudflare는 전통적인 CDN의 영역을 넘어 빠르게 확장해왔습니다. Workers, R2, D1 등 개발자 친화적인 최신 서비스 제품군을 출시하며, 기존 클라우드 제공업체들에 대항하는 강력한 edge-native 대안으로 자리매김하고 있습니다.
Cloudflare가 지원하는 주요 클라우드 역량은 다음과 같습니다:
-
Edge Compute 및 Serverless
-
Object 및 Blob Storage
-
Relational Databases
-
Containers
-
Sandboxes
-
Workflows
-
AI Agents SDK
-
Vector 및 AI search
-
Data Connectivity
-
AI Infrastructure
-
Content Delivery Network
-
DNS
-
Load Balancing
질문: Cloudflare의 새로운 서비스를 사용해본 적이 있으신가요? 어떤 점이 인상적이었나요?
인기 있는 Backend 기술 스택

HTTP vs. HTTPS

웹사이트에 접속할 때, HTTP와 HTTPS의 차이가 데이터가 안전하게 전송되는지 아니면 평문으로 노출되는지를 결정합니다. 내부에서 실제로 어떤 일이 일어나는지 살펴보겠습니다.
HTTP:
-
데이터를 평문으로 전송하므로, 네트워크상의 누구나 이를 가로챌 수 있습니다.
-
Client와 Server가 단순한 TCP handshake를 수행합니다: SYN, SYN-ACK, ACK
-
빠르지만 완전히 보안에 취약합니다. Password, token, form 데이터 모두 전송 중에 읽힐 수 있습니다.
HTTPS (SSL/TLS):
-
Step 1: TCP Handshake - 표준 연결 설정입니다.
-
Step 2: Certificate Check - Client가 hello를 보냅니다. Server는 hello와 함께 SSL/TLS certificate로 응답합니다. 이 certificate에는 server의 public key가 포함되어 있으며, 신뢰할 수 있는 Certificate Authority(CA)가 서명한 것입니다.
브라우저는 이 certificate가 정당한지, 만료되지 않았는지, 실제로 접속하려는 도메인에 속하는지 검증합니다. 이를 통해 공격자가 아닌 실제 server와 통신하고 있음을 증명합니다.
-
Step 3: Key Exchange - 여기서 asymmetric encryption이 발생합니다. Server는 public key와 private key를 가지고 있습니다. Client가 session key를 생성하고, 이를 server의 public key로 암호화하여 전송합니다. 오직 server만이 자신의 private key로 이를 복호화할 수 있습니다.
이제 양측 모두 다른 누구도 가로챌 수 없었던 동일한 session key를 보유하게 됩니다. 이 key가 나머지 세션 동안 symmetric encryption key가 됩니다.
-
Step 4: Data Transmission - 이제 모든 request와 response가 해당 session key를 사용한 symmetric encryption으로 암호화됩니다.
질문: TLS 이슈를 디버깅할 때 주로 사용하시는 도구는 무엇인가요? openssl, curl -v, 아니면 다른 것인가요?
Forward Proxy vs. Reverse Proxy

Forward proxy는 client(사용자)와 인터넷 사이에 위치합니다. 사용자를 대신하여 동작하며, 사용자의 신원을 숨기거나 외부 웹에 도달하기 전에 트래픽을 필터링합니다.
Forward proxy의 주요 활용 사례:
-
인터넷 탐색 중 사용자를 보호합니다
-
조직이 특정 웹사이트에 대한 접근을 제한하도록 지원합니다
-
자주 접근하는 콘텐츠를 caching하여 웹 탐색 속도를 향상시킵니다
Reverse proxy는 인터넷(client)과 backend server 사이에 위치합니다. Server를 대신하여 동작하며, 들어오는 트래픽을 처리합니다.
Reverse proxy의 주요 활용 사례:
-
여러 server에 트래픽을 분산하여 단일 server에 과부하가 걸리지 않도록 보장합니다
-
SSL encryption/decryption을 처리하여 backend server의 부담을 경감시킵니다
-
DDoS 공격으로부터 backend server를 보호합니다
질문: Forward proxy와 reverse proxy를 이해하기 위해 추가로 고려해야 할 사항이 있으신가요?
모든 개발자가 알아야 할 것: Concurrency는 Parallelism이 아닙니다
시스템 설계에서 concurrency와 parallelism의 차이를 이해하는 것은 매우 중요합니다.

GoLang의 창시자 중 한 명인 Rob Pike가 말했듯이: "Concurrency는 많은 일을 한꺼번에 다루는(dealing with) 것입니다. Parallelism은 많은 일을 한꺼번에 수행하는(doing) 것입니다." 이 구분은 concurrency가 프로그램의 **설계(design)**에 관한 것인 반면, parallelism은 **실행(execution)**에 관한 것임을 강조합니다.
Concurrency는 여러 일을 한꺼번에 다루는 것입니다. 여러 task를 동시에 처리할 수 있도록 프로그램을 구조화하는 것을 의미하며, task들이 시작하고 실행되고 완료되는 시간이 겹칠 수 있지만 반드시 같은 순간에 일어나는 것은 아닙니다.
Concurrency는 독립적으로 실행되는 프로세스들의 구성에 관한 것이며, 프로그램이 하나의 task를 완료하기 전에 다른 task를 시작하면서도 여러 task를 진행시킬 수 있는 능력을 말합니다.
Parallelism은 반면에 여러 계산의 동시 실행을 의미합니다. 컴퓨터 내의 여러 processor나 core를 활용하여 두 개 이상의 task나 계산을 동시에 실행하는 기법입니다. Parallelism은 여러 처리 장치를 갖춘 하드웨어가 필요하며, 주요 목표는 시스템의 처리량과 계산 속도를 높이는 것입니다.
실용적인 측면에서, concurrency는 단일 코어 프로세서에서도 프로그램이 입력에 반응하고, 백그라운드 작업을 수행하며, 여러 작업을 겉보기에 동시에 처리할 수 있게 해줍니다. 이는 프로그램이 파일, 네트워크, 사용자 상호작용과 같은 외부 이벤트를 기다려야 하는 I/O-bound 및 high-latency 작업에서 특히 유용합니다.
Parallelism은 여러 작업을 동시에 수행할 수 있는 능력으로, 계산 속도와 처리량이 병목인 CPU-bound 작업에서 핵심적입니다. 복잡한 수학 계산, 데이터 분석, 이미지 처리, 실시간 처리가 필요한 애플리케이션은 병렬 실행으로 상당한 이점을 얻을 수 있습니다.
원문 출처: ByteByteGo Newsletter EP190
Thank you for reading.