а зачем его покупать сразу? сервер может расти за Прибылью.
в общем, парадигма ИЗМЕНИЛАСЬ! еще лет 10 назад каждая первая статья о Масштабировании вполне резонно отмечала, что Вертикальное Масштабирование вас НЕ вывезет...
но!
на сегодняшний день ваш Бизнес сдохнет раньше, чем вы исчерпаете возможности одного Хорошего Сервера.
ЗЫ расчлененка - дополнительная Сложность! зачем себе портить Жизнь, если можно не портить?
на сегодняшний день, микросервисы - некогда и незачем!
как я уже здесь цитировал:
Если вы давно не смотрели на серверное оборудование, то обнаружите, что современные высокопроизводительные серверы — это целые датацентры в коробке! Я просто ткнул Dell и нашел следующие характеристики PowerEdge R960:
240 ядер (4 сокета по 60 ядер в каждом)
16 ТБ ОЗУ в 64 модулях DDR5 DIMM (это как 1000 приличных ноутбуков)
А если нужно хранилище, то вы можете подключить до 24 NVMe дисков — по 4 ТБ каждый, а это почти 100 ТБ высокоскоростного SSD! И если 240 ядер вам покажется маловато, то Intel анонсировала процессоры Xeon с 288... Уже прямо сейчас вы можете подключить два Xeon 6780 к PowerEdge R770 серверу, получив в общей сложности 288 ядер, по цене около USD 32k.
Большинство enterprise-scale архитектур основаны на предположении, что одной машины недостаточно для обработки требуемой рабочей нагрузки. Большинство облачных решений, особенно serverless, основаны на той же предпосылке: если вам нужно что-то масштабировать, то оно должно быть distributed! Вторым вопросом является отказоустойчивость: в распределенной, масштабируемой системе легче обработать отказ одного компонента и, таким образом, увеличить uptime.
Сколько операционных данных хранит ваше бизнес-приложение? 1 мегабайт на клиента? Тогда 1 миллион клиентов потребуют всего 1 ТБ. И у нас еще осталось довольно много свободного пространства — в оперативной памяти! 1000 запросов в секунду к in-memory database? Я почти гарантирую вам, что у вас больше, чем несколько ядер CPU будет простаивать. 10 000 запросов (40 на ядро в секунду) или даже 50 000 звучит более правдоподобно.
А как насчет отказоустойчивости? Все постоянно выходит из строя, верно? По крайней мере, так сказал Werner Vogels, но это было в 2008 году, когда AWS была немного больше, чем S3, SQS и EC2, последний из которых только что вышел из публичной бета-версии и получил SLA — возможно, это взаимосвязано. Современные серверы имеют избыточные, сменные блоки питания и вентиляторы, диски с возможностью горячей замены, а некоторые, как утверждается, даже имеют сменную оперативную память! Тем не менее, вы не будете хранить все свои данные только в оперативной памяти, а будете писать в persistent log, который позволит вам восстановить состояние системы в случае сбоя. Для большого сервера это может занять некоторое время. Например, если у вас будет 2 сбоя оборудования в год и время восстановления составляет 30 минут, то вы все равно получите 4 девятки, примерно столько же, сколько вам обещает большинство облачных сервисов. В действительности вы, вероятно, разобьете свою систему на более мелкие компоненты: на высокодоступные, и другие, которые могут позволить себе немного более длительное MTTR.
например, в IP-телефонии нужно за 100ms принять решение: разрешаем звонок или нет? по какому тарифу? вопрос: а на какое время Java-сервис зависает в мусорке?
и еще.
если падает процесс Сервиса - это проблема, но не беда. а вот когда морозится на несколько секунд, а потом продолжает как ни в чем не бывало... это уже БЕДА!
pdf называется "Distilling the Real Cost of Production Garbage Collectors"
и начинается с "Despite the long history of garbage collection (GC) and its prevalence in modern programming languages, there is surprisingly little clarity about its true cost. Without understanding their cost, crucial tradeoffs made by garbage collectors (GCs) go unnoticed."
инфа там конечно для маленьких, но будет полезна и взрослым.
ДА! я сейчас мерзко хихикаю, потирая потные ладошки)))
но никак не за производительность
вы просто не понимаете, с кем разговариваете мне еще лет 20 назад "прогрессивная общественность" пела байки про "инкрементальный GC", не делающий stop the world... даже Страуструп топил за GC в C++, а потом "вдруг" одумался ;)
Я много лет писал на С++ и могу вам сказать, что он не быстрее ни на 92%, ни на 82%
если честно, то я тоже много лет писал на С++ и могу вам сказать, что mp_allocator дает ускорение в 5-8 раз, а не жалкие 100% https://ders.by/cpp/norefs/norefs.html#4.2
и везде и всегда, GC - это УБИЙЦА производительности многопоточных приложений!
факт в том, что на сегодняшний день мелким и средним бизнесам ВООБЩЕ не нужна распределенка, k8s и прочие гадости:
Большинство enterprise-scale архитектур основаны на предположении, что одной машины недостаточно для обработки требуемой рабочей нагрузки. Большинство облачных решений, особенно serverless, основаны на той же предпосылке: если вам нужно что-то масштабировать, то оно должно быть distributed! Вторым вопросом является отказоустойчивость: в распределенной, масштабируемой системе легче обработать отказ одного компонента и, таким образом, увеличить uptime.
Сколько операционных данных хранит ваше бизнес-приложение? 1 мегабайт на клиента? Тогда 1 миллион клиентов потребуют всего 1 ТБ. И у нас еще осталось довольно много свободного пространства — в оперативной памяти! 1000 запросов в секунду к in-memory database? Я почти гарантирую вам, что у вас больше, чем несколько ядер CPU будет простаивать. 10 000 запросов (40 на ядро в секунду) или даже 50 000 звучит более правдоподобно.
А как насчет отказоустойчивости? Все постоянно выходит из строя, верно? По крайней мере, так сказал Werner Vogels, но это было в 2008 году, когда AWS была немного больше, чем S3, SQS и EC2, последний из которых только что вышел из публичной бета-версии и получил SLA — возможно, это взаимосвязано. Современные серверы имеют избыточные, сменные блоки питания и вентиляторы, диски с возможностью горячей замены, а некоторые, как утверждается, даже имеют сменную оперативную память! Тем не менее, вы не будете хранить все свои данные только в оперативной памяти, а будете писать в persistent log, который позволит вам восстановить состояние системы в случае сбоя. Для большого сервера это может занять некоторое время. Например, если у вас будет 2 сбоя оборудования в год и время восстановления составляет 30 минут, то вы все равно получите 4 девятки, примерно столько же, сколько вам обещает большинство облачных сервисов. В действительности вы, вероятно, разобьете свою систему на более мелкие компоненты: на высокодоступные, и другие, которые могут позволить себе немного более длительное MTTR.
Если вы пытаетесь сделать проект, конкурирующий с тем, на котором зарабатывает Диктатор — тогда будьте готовы к тому, что вас будут годами, так сказать, «травить собаками».
ну покажите мне еще один "велосипед", где копирование объекта HashMap со всеми ее элементами - это просто memcpy()? джависты даже не поймут суть вопроса.
а зачем его покупать сразу? сервер может расти за Прибылью.
в общем, парадигма ИЗМЕНИЛАСЬ! еще лет 10 назад каждая первая статья о Масштабировании вполне резонно отмечала, что Вертикальное Масштабирование вас НЕ вывезет...
но!
на сегодняшний день ваш Бизнес сдохнет раньше, чем вы исчерпаете возможности одного Хорошего Сервера.
ЗЫ расчлененка - дополнительная Сложность! зачем себе портить Жизнь, если можно не портить?
на сегодняшний день, микросервисы - некогда и незачем!
как я уже здесь цитировал:
https://www.linkedin.com/pulse/past-constraints-you-never-thought-sergey-derevyago-ien3f
люди!
таки сделайте два шага от телевизора и внимательно посмотрите, что вы тут пишете...
вот эта ДЛИННЮЩАЯ ПРОСТЫНЯ текста - разве она решает хоть одну полезную задачу?
нет!
вы Героически Боритесь с врожденными недостатками STL и копирования/перемещения С++. и вы опять проиграете!
зачем тратить время на глупости, когда уже знаете, КАК программировать в удовольствие?
а тесты производительности запускали? вдруг и правда "МНОГОКРАТНОЕ ускорение"
мой бог, Чудовищное(tm) зрелище!!! вот за это ненавидят и боятся C++.
уже давно писал и объяснял: переходите на sh_ptr/mem_pool и получите МНОГОКРАТНОЕ ускорение без мути https://ders.by/cpp/norefs/norefs.html#4.3
ЗЫ плюс научитесь различать Чудовищное...
увы, я только вышел поболтать. и никакого отношения ни к Архитектуре, ни к IP-телефонии не имею))
так спросите "в КРУПНЕЙШИХ проектах", как они тюнят GC. и что все равно происходит.
ок, давайте посмотрим на Архитектуру.
например, в IP-телефонии нужно за 100ms принять решение: разрешаем звонок или нет? по какому тарифу?
вопрос: а на какое время Java-сервис зависает в мусорке?
и еще.
если падает процесс Сервиса - это проблема, но не беда.
а вот когда морозится на несколько секунд, а потом продолжает как ни в чем не бывало... это уже БЕДА!
только на мелких проектах.
ну, давайте читать вместе:
pdf называется "Distilling the Real Cost of Production Garbage Collectors"
и начинается с "Despite the long history of garbage collection (GC) and its prevalence in modern programming languages, there is surprisingly little clarity about its true cost. Without understanding their cost, crucial tradeoffs made by garbage collectors (GCs) go unnoticed."
инфа там конечно для маленьких, но будет полезна и взрослым.
ДА!
я сейчас мерзко хихикаю, потирая потные ладошки)))
вы просто не понимаете, с кем разговариваете
мне еще лет 20 назад "прогрессивная общественность" пела байки про "инкрементальный GC", не делающий stop the world... даже Страуструп топил за GC в C++, а потом "вдруг" одумался ;)
короче, в https://www.linkedin.com/pulse/how-java-garbage-collection-works-sergey-derevyago-af84f есть ссылки прямо по теме. постарайтесь понять ЧТО там написано Специалитами.
Жаба - это не только расход памяти. GC жабы - позор.
как и все остальные, вы сейчас не учитываете один маленький, но очень ключевой момент:
читайте https://ders.by/arch/scale/scale.html
если честно, то я тоже много лет писал на С++
и могу вам сказать, что mp_allocator дает ускорение в 5-8 раз, а не жалкие 100%
https://ders.by/cpp/norefs/norefs.html#4.2
и везде и всегда, GC - это УБИЙЦА производительности многопоточных приложений!
факт в том, что на сегодняшний день мелким и средним бизнесам ВООБЩЕ не нужна распределенка, k8s и прочие гадости:
вот ссылка, если нужны подробности: https://www.linkedin.com/pulse/past-constraints-you-never-thought-sergey-derevyago-ien3f
а теперь посмотрите на это:
by using GC, applications spend 7–82% more wall-clock time and 6–92% more CPU cycles relative to their intrinsic costs.
both Shenandoah and ZGC have worse (by factors of 10–100×) query latencies than the other three collectors!
отсюда https://www.linkedin.com/pulse/how-java-garbage-collection-works-sergey-derevyago-af84f
почитайте главу 5.7 Clocks and Timers
книги Nicolai M. Josuttis-The C++ Standard Library, 2nd Edition_ A Tutorial and Reference-Addison-Wesley (2012).pdf
абсолютно в точку!
"Здесь вообще всё просто так, кроме денег" (ц)
смиялсо.
ну покажите мне еще один "велосипед", где копирование объекта HashMap со всеми ее элементами - это просто memcpy()? джависты даже не поймут суть вопроса.
а бывает HashMap с транзакциями. но на Жабе у вас не получится.
https://ders.by/cpp/memdb/memdb.html
хехе. для начала контекст новым читателям:
итак, наш Vault - тоже База. база секретов.
и вы только что нам сказали, что у вас есть "2 варианта" безопасного соединения с Vault. прекрасно!
так почему бы Приложению сразу не использовать эти "2 варианта" для прямого соединения с Базой без всякого Vault?
если "2 варианта" безопасны, то Vault не нужен. (не улучшает Безопасность)
если "2 варианта" НЕ безопасны, то Vault не нужен тем более!! (он ухудшает Безопасность)
вы не поняли сути вопроса.
если для доступа к ПровайдеруСекретов необходим токен, то вам нужен ПровайдерСекретов2 ;)
и взрослые вроде люди... зачем разбирать сказки?
галочка на UI - это просто галочка. шифруйте сами локально. только так.