Я читал вопросы и ответы создателя Imgur, и он подробно рассказал о серверной инфраструктуре, на которой работает Imgur. Вот небольшая цитата из того, что он сказал:
Большинство кластеров используют экземпляры c1.xlarge. Кластер загрузки обрабатывает все запросы загрузки и обработки изображений, такие как эскизы и изменение размера, и каждый экземпляр представляет собой огромный экземпляр кластера cc1.4xlarge.
Я понимаю, что изображения не занимают много места, но зачем вообще идти по этому пути? Тем более, учитывая значительную стоимость разных.
Если вы хотите прочитать все вопросы и ответы, вы можете проверьте это здесь. Мне это показалось весьма интересным.
S3 в основном предлагает исключительно высокую надежность и очень низкие административные расходы. Сама услуга на самом деле не так уж и дешева (особенно когда дело доходит до обслуживания запросов), но в большинстве случаев затраты на рабочую силу по управлению альтернативами сводят на нет любую экономию. Однако в очень больших масштабах экономия начинает перевешивать накладные расходы на управление.
Например:
Запросы GET на S3 стоят 0,004 доллара США за 10 000 запросов.
T2.micro может работать со скоростью около 180 Мбит / с и стоит 0,013 доллара в час. Предполагая размер изображения 500 КБ (4000 Кбит), это около 46 изображений / с. Предполагая, что вы можете насытить этот экземпляр (что, по-видимому, может сделать крупномасштабная служба обмена изображениями), это около 165 тыс. Запросов в час.
Так что для T2.micro это будет стоить 0,013 доллара в час по сравнению с 0,066 доллара на S3. На практике вы можете столкнуться с другими узкими местами на T2.micro, поэтому S3, вероятно, окажется немного впереди в этом масштабе.
Однако если вы возьмете c4.8xlarge (с сетью 10 Гбит), это будет стоить 1,763 доллара в час. При этом вы можете обрабатывать около 2620 изображений / с, или около 9,4 м / час. Это будет стоить вам 3,76 доллара в час на S3. Добавьте скидки на зарезервированные экземпляры и т. Д., И разница станет еще больше.
Кроме того, вы не можете разгрузить такие процессы, как изменение размера изображений до S3, и вы также можете запустить уровень защиты WAF или DDoS, чтобы снизить затраты на полосу пропускания из-за атак.
Сказав это, общая архитектура должна хранить оригиналы в S3 (где они будут редко доступны, но где важна надежность) и для кэширования версий с измененным размером на интерфейсных серверах. Я считаю, что Netflix использовал или использует эту технику (за исключением того, что они хранили кешированные файлы на своем собственном оборудовании Colo). Меня не удивило бы, если бы Имгур сделал то же самое.