728x90

난 항상 면접이 끝날 때마다 면접관분들에게 "짧은 시간만으로는 알 수 없겠지만, 제 이력이나 면접에서 볼 때에 어떤 부분을 공부하고 더 알아갔으면 좋겠는지" 를 여쭤보는 편이다.

 

 

당근마켓

이하 바니바니 바니바니 당근 당근에 SRE Part 에 지원하였고, 서류전형은 합격하였지만 화상면접은 글쎄다...

일단 면접 후기와 면접관님에 의한 부분을 좀 보완하자면 내가 실제로 해야할 부분들은 앞으로 

 

Ashon 님의 조언은 Terraform 을 실전적으로 사용해보라는 말씀을 가장 중점적으로 언급해주셨다.

네트워크 부분에서 이론적인 부분을 학습하였다면, SRE Engineer 로써 성장하기 위해서는 실제적으로 다뤄보는 것이 가장 중요한 부분이긴 하니까 말이다.

 

아무래도 AWS CloudFormation 을 사용해본 경험은 있지만, Cloud Formation 의 경우 AWS Product 군에만 한정적이고 Terraform 같은 경우에는 Cloud Provider 들을 넘나들어서 Microsoft Azure, Google GCP, AWS CloudFormation 을 다 지원할 수 있다는 것이 장점이 되겠다

 

그러니까 빠르고 좋은 Go 언어를 사용해서 자사에서 Public Cloud 제품군들을 여러 곳에서 사용 중 이라면, 해당 부분에 대하여 자동으로 배포할 수 있도록 설정할 수 있으니까 이것이 개꿀따리가 아니겠는가. 아무래도 이건 꼭 해봐야겠다 싶었다

 

그리고 추가적으로 Ozzy 님 같은 경우도 조언을 주셨는데 

1. 실제적으로 어느 정도 트래픽을 제어할 수 있는 부분에 대한 경험들을 해볼 것

예를 들어서 Java 에서는 GC 가 관여하고 있는데, 이 GC 의 Heap Size 를 조절하는 것에 대해서도 이야기 해주셨다.

 

이 부분에 대해서 가장 흥미로웠던 부분이 무었이냐면 기본적으로 JVM 에서 GC 는 Heap 영역에 대해서 Memory 를 turn over 하는 역할을 가지고 있는데 이 부분에 대해서 Heap Size 를 조절할 경우 Latency 를 조절 할 수도 있다는 생각이 들었다.

 

2. 트래픽을 제어함에 있어서 포트가 고갈 되는 상황이 왔었는 지를 물어보셨다

이는 분명 댕근댕근 마켓에서는 배포를 해서 들어갔는데 유저가 너무 많이 몰려서 포트가 고갈될 수도 있다는 이야기이다. 그렇다면 이 경우에는 어떻게 해야할까? 과연 HTTP 2.0 을 지원하고 브라우저에서 Auto Compression 을 지원한다고 해도 트래픽이 전부다 처리가 안 될수 있다는 이야기 이다.

 

그렇다고 해서 네트워크 트래픽에 대해서 포트로 들어오는 데이터들을 전부다 바이너리화 해서 메모리 아껴쓰자고 010101010100000 이따구로 보낼 수는 없는 노릇이고, 다만 HTTP 2.0 에서 어느정도 Prioritization 과 Multiplexing 을 지원함으로 인해서 HTTP 1.1 때보다는 이 부분에 대해서 처리할 수 있을 것만 같다는 생각이 들긴 했다.

 

3. Socket Descriptor 가 뻗은 상황이 있었는지에 대해서 물어보셨었다

그래 있었다.. 그 전직장에서 PHP-FPM 이 뻗은 상황이 있었고, 이 부분에 대해서 emergency restart setting 으로 간신히 그걸 처리해서 어느정도 확보하긴 했었지만 Socket Descriptor 가 뻗은 경우는 단순히 그런 경우가 아닐 것이다

 

 

분명한 것은 위에서 언급한 것들을 처리하려면 TPS 에 대한 처리가 필요할 것 같은데, 그렇다면 Scale Up, Scale Out, HA 이외에도 캐시를 두는 것과 CDN 을 직접 구축해서 효율화 해야하는 것도 있을 것이다.

+ Recent posts