기존 아키텍처

동적 스케일 프로젝트를 적용하고 난 후의 아키텍처는 다음과 같습니다.

Untitled

동적 스케일 프로젝트를 하면서 여러 문제를 해결했지만 여전히 킥보드는 고정된 Relay에 연결된다는 문제가 존재합니다. 이를 해결하려는 프로젝트가 바로 동적 할당 프로젝트입니다.

문제점

현재의 아키텍처는 다음과 같은 문제를 가집니다.

Untitled

만약에 Relay C가 실행되고 있는 EC2에 문제가 생기게 된다면 11114 킥보드는 사용할 수 없게 됩니다. 11114 킥보드는 Relay C에만 연결될 수 있고 Relay C도 사용할 수 없기 때문에 11114 킥보드를 다른 Relay에 연결하는 것도 불가능합니다. 즉, Relay C가 복구되기 전까지 11114 킥보드는 사용할 수 없습니다.

Relay에 킥보드가 천 대 정도 연결되어 있다고 가정하면 Relay에 문제가 생겼을 때 천 대 정도의 킥보드를 사용할 수 없게 됩니다.

Untitled

새로운 Relay 서버인 D를 생성한다면, 이 Relay에 킥보드를 연결할 수 있을까요? 새로운 Relay 서버를 만들더라도, 해당 서버의 IP를 가진 킥보드가 없기 때문에, 킥보드의 서버를 옮겨주지 않으면 Relay를 추가해도 킥보드와 연결될 수 없습니다.

즉, 위에서 다룬 문제점을 정리하면 아래와 같습니다.

이러한 문제를 해결하기 위해서 동적 할당 프로젝트를 시작하게 되었습니다.

동적 할당 프로젝트

위 문제점을 해결하는 방법은 굉장히 간단합니다. 사용자에게 웹 서버를 제공할 때 ALBASG를 두는 것처럼 Relay 서버도 LB를 앞에 두어 킥보드LB를 바라보도록 하면 됩니다. 이런 TCP Load Balancing을 제공해주는 AWS 서비스가 바로 AWS NLB입니다.