# cloudflare가 nginx를 걷어내고 Rust로 HTTP Proxy(Pingora)를 만들어서 사용

> Clean Markdown view of GeekNews topic #7400. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=7400](https://news.hada.io/topic?id=7400)
- GeekNews Markdown: [https://news.hada.io/topic/7400.md](https://news.hada.io/topic/7400.md)
- Type: news
- Author: [yunyun0505](https://news.hada.io/@yunyun0505)
- Published: 2022-09-15T09:39:57+09:00
- Updated: 2022-09-15T09:39:57+09:00
- Original source: [blog.cloudflare.com](https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/)
- Points: 26
- Comments: 5

## Topic Body

nginx는 한계가 있었음  
- 매 요청에 대해 단일 worker만 사용하므로 cpu core 사용 불균형이 존재함  
- worker당 connection pool이 존재하기 때문에 TCP 및 TLS 커넥션 연결 재활용율이 나쁨 -> TTFB가 높아짐  
- 또한 nginx를 운영하는데 필요한 기능들을 자체 구현하고 있었는데 C로 설계된 nginx는 memory-safe하지 않아서 숙련된 엔지니어도 실수를 하곤 했음  
  
Pingora  
- Cloudflare는 비 RFC 규격의 요청도 많이 받고 있는데 타사 라이브러리(hyper)는 RFC에 엄격한 상태로 구현되어있어서 확장하려면 추가 공수가 들어가기에 자체 구축  
- Rust는 성능 저하 없이 memory safe한 방식으로 C가 할 수 있는 일을 대체 가능해서 선택  
- 연결 풀을 쉽게 공유하기 위해 work-stealing 방식의 스케줄링 시스템을 도입했고, 재사용률이 증가함. 이전에 비해서 초당 1/3 수준의 커넥션을 맺음  
- 이전에 비해서 CPU는 70%, 메모리는 67% 적게 사용함  
- 추후 오픈소스로 공개 예정

## Comments



### Comment 12521

- Author: functor
- Created: 2022-09-27T11:34:07+09:00
- Points: 1

cpu 70% 메모리 67%가 놀랍네요..

### Comment 12332

- Author: ifmkl
- Created: 2022-09-16T13:42:12+09:00
- Points: 1

크 nginx 도 참 잘썼는데 요거 오픈소스로 나오면 바로 써보고 싶네요

### Comment 12316

- Author: forteleaf
- Created: 2022-09-16T00:46:55+09:00
- Points: 1

러스트를 공부해도 취업할 곳이 읎네요

### Comment 12310

- Author: jungmin1237
- Created: 2022-09-15T16:02:20+09:00
- Points: 1

Rust라니 마음에 드는군여

### Comment 12301

- Author: jjpark78
- Created: 2022-09-15T10:25:47+09:00
- Points: 1

시스템 프로그래밍에서 만큼은 러스트가 점점 독보적이 되어가고 있네요..
