-
대규모 시스템 구축을 배우기 위해서...대규모 스트림 처리 2024. 8. 19. 20:52
이 글은 비전문가가 공부한 내용을 되새기기 위해 작성됐습니다. 부정확한 정보나 서술이 있을 수 있습니다.
* 목차 *
- 1. 대규모 시스템이란 무엇일까?
- Queue를 사용한 대규모 스트림 처리
- 성능 테스트는 필수일까?
- 2. 대규모 시스템을 배우기 위한 학습 전략
1. 대규모 시스템이란 뭘까?
인터넷 환경은 급격하게 발전해왔습니다. 제가 어렸을 때만 해도 컴퓨터는 한 가구당 하나씩 있는 귀한 물건이었지만, 현재는 한사람당 2 ~3개, 많게는 4~5개의 크고 작은 휴대용 컴퓨터(스마트폰, 노트북 등등)를 가지고 있습니다. 인터넷의 접근성이 매우 증가한만큼, 웹 애플리케이션은 필연적으로 늘어난 잠재 사용자에 비례해 많은 요청을 견뎌내야합니다. 언제, 어디서, 어떻게, 왜 라는 질문들을 개발자는 미리 고민하고 웹 애플리케이션에 녹여내야합니다. 그렇지 못하면, 갑작스러운 트래픽 증가에 대처할 새 없이 서버는 터져버리고 서비스는 중단될 것이며 많은 사용자들은 자신들이 사용하는 웹 애플리케이션에 대해 안정성을 의심할 것입니다.
서두가 길었습니다. 그렇다면 대규모 시스템이란 뭘까요? 서비스가 많은 시스템? 이용자가 많은 시스템? 여러가지가 있겠지만, 개발자의 입장에서 대규모 시스템이란 수많은 사용자를 처리하는 것 뿐만 아니라, 안정성과 신뢰성을 동시에 유지하면서 고성능을 제공하는 시스템입니다. 이 글을 시작으로, 저는 대규모 시스템을 설계하고 구축하는 과정에서 고려해야할 중요한 요소들을 알아볼 것입니다. 대규모 스트림 처리에 대한 이해, 대규모 시스템의 전반적인 구성과 운영 방법은 앞으로 다룰 내용의 핵심입니다.
1.1 Queue를 통한 대규모 스트림처리
- 자료구조 queue를 사용해서 대규모 처리하는 방법을 배웁니다.
- queue를 사용해야할 상황과 사용하지 않아도 되는 상황을 구분하고 적용합니다.
- queue를 효과적으로 관리하는 방법을 배웁니다.
- queue 라우팅을 통해 서비스를 설계하고 개발하는 방법을 배웁니다.
1.2 개발한 애플리케이션의 성능 테스트는 필수일까?
- 검증 작업은 귀찮고 힘들지만, 반드시! 반드시!! 테스트를 거쳐야한다.
- 기능과 성능을 확실히 검사할 수 있는 좋은 테스트를 만들어야합니다.
2. 대규모 시스템을 배우기 위한 학습 전략
대규모 시스템은 설계의 관점이 강하기 때문에 이미지화를 하지 않으면 흐름을 놓치기 쉽습니다. 반드시 자신이 뭘 알고 뭘 놓치고 있는지 확인하면서 학습해야겠습니다.
다음 글에서는 대규모 시스템이 고려해야할 중요한 사항과 각종 요청 최적화에 대해 알아보겠습니다.