HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Прежде, чем приступить к созданию приложения, нужно продумать его архитектуру. Предлагаем вам 12 советов, которые помогут создать хорошую архитектуру ПО.</p>
1 <p>Прежде, чем приступить к созданию приложения, нужно продумать его архитектуру. Предлагаем вам 12 советов, которые помогут создать хорошую архитектуру ПО.</p>
2 <h2>1. Упрощаем жизнь разработчикам</h2>
2 <h2>1. Упрощаем жизнь разработчикам</h2>
3 <p>Наша задача - оптимизировать продуктивность разработчика, ведь самый ценный ресурс - это человеческий ресурс. Чтобы эту задачу реализовать, следуйте ряду рекомендаций: - не перегружайте приложение излишней функциональностью; - старайтесь использовать общепринятый подход к решению задач; - старайтесь задействовать вспомогательные инструменты; - каждая задача, решаемая приложением, должна быть очевидной.</p>
3 <p>Наша задача - оптимизировать продуктивность разработчика, ведь самый ценный ресурс - это человеческий ресурс. Чтобы эту задачу реализовать, следуйте ряду рекомендаций: - не перегружайте приложение излишней функциональностью; - старайтесь использовать общепринятый подход к решению задач; - старайтесь задействовать вспомогательные инструменты; - каждая задача, решаемая приложением, должна быть очевидной.</p>
4 <h2>2. Уделяем внимание мелочам</h2>
4 <h2>2. Уделяем внимание мелочам</h2>
5 <p>Фраза о внимании к мелочам звучит банально, но именно поэтому многие из нас не думают о простых и очевидных вещах. Чтобы этого избежать: - последовательно решайте задачи, поставленные перед проектом; - делайте приложение легкорасширяемым; - пусть приложение будет настолько простым, насколько это вообще возможно.</p>
5 <p>Фраза о внимании к мелочам звучит банально, но именно поэтому многие из нас не думают о простых и очевидных вещах. Чтобы этого избежать: - последовательно решайте задачи, поставленные перед проектом; - делайте приложение легкорасширяемым; - пусть приложение будет настолько простым, насколько это вообще возможно.</p>
6 <h2>3. Не забываем о юзабилити</h2>
6 <h2>3. Не забываем о юзабилити</h2>
7 <p>Уровень юзабилити очень важен, т. к. повышает удовлетворённость и доверие клиентов, снижает затраты.</p>
7 <p>Уровень юзабилити очень важен, т. к. повышает удовлетворённость и доверие клиентов, снижает затраты.</p>
8 <p>Советы: - исключите из приложения те технологии, которые специфичны для конкретного поставщика; - приложение должно поддерживать последние стандарты; - обеспечьте быстрый отклик; - по максимуму используйте графические возможности приложения, однако добавляйте анимацию лишь там, где это уместно; - добавьте поддержку A/B тестирования; - подключите поддержку аналитики.</p>
8 <p>Советы: - исключите из приложения те технологии, которые специфичны для конкретного поставщика; - приложение должно поддерживать последние стандарты; - обеспечьте быстрый отклик; - по максимуму используйте графические возможности приложения, однако добавляйте анимацию лишь там, где это уместно; - добавьте поддержку A/B тестирования; - подключите поддержку аналитики.</p>
9 <h2>4. Обеспечиваем безопасность</h2>
9 <h2>4. Обеспечиваем безопасность</h2>
10 <p>Зачем нужна безопасность, объяснять не стоит. Чтобы её обеспечить: - проходите сторонние пентесты; - отдавайте предпочтение лучшим практикам безопасности; - внедряйте стандарты безопасности повсюду, где это вообще возможно.</p>
10 <p>Зачем нужна безопасность, объяснять не стоит. Чтобы её обеспечить: - проходите сторонние пентесты; - отдавайте предпочтение лучшим практикам безопасности; - внедряйте стандарты безопасности повсюду, где это вообще возможно.</p>
11 <h2>5. Обеспечиваем надёжность</h2>
11 <h2>5. Обеспечиваем надёжность</h2>
12 <p>Надёжность - это способность системы работать нужным нам образом и без сбоев в течение необходимого времени. Тут следует обратить внимание на то, что сбои иногда происходят у всех, поэтому информацию о них нужно обязательно записывать для дальнейшего анализа причин.</p>
12 <p>Надёжность - это способность системы работать нужным нам образом и без сбоев в течение необходимого времени. Тут следует обратить внимание на то, что сбои иногда происходят у всех, поэтому информацию о них нужно обязательно записывать для дальнейшего анализа причин.</p>
13 <h2>6. Не забываем про производительность</h2>
13 <h2>6. Не забываем про производительность</h2>
14 <p>Да, иногда повышение производительности стоит дорого, но мы обязаны обеспечить тот уровень, который необходим для решения наших задач и соответствует нашим возможностям. Самое малое, что нужно сделать, - минимизировать задержку в пределах &lt; 250 мс для 90 % запросов и &lt; 2 с для всех запросов либо добавить механизмы для её компенсации, к примеру, кеширование.</p>
14 <p>Да, иногда повышение производительности стоит дорого, но мы обязаны обеспечить тот уровень, который необходим для решения наших задач и соответствует нашим возможностям. Самое малое, что нужно сделать, - минимизировать задержку в пределах &lt; 250 мс для 90 % запросов и &lt; 2 с для всех запросов либо добавить механизмы для её компенсации, к примеру, кеширование.</p>
15 <h2>7. Закладываем масштабируемость</h2>
15 <h2>7. Закладываем масштабируемость</h2>
16 <p>Масштабируемость - это способность системы выполнять обработку возрастающей нагрузки без непосредственного влияния на фактическую производительность (или способность легко и быстро увеличить эту производительность). Чтобы её обеспечить: - отдавайте предпочтение не вертикальному, а горизонтальному масштабированию; - закладывайте возможность легко добавить в систему дополнительные узлы; - балансируйте нагрузку между узлами, распределяйте нагрузку и не перегружайте каждый отдельно взятый узел.</p>
16 <p>Масштабируемость - это способность системы выполнять обработку возрастающей нагрузки без непосредственного влияния на фактическую производительность (или способность легко и быстро увеличить эту производительность). Чтобы её обеспечить: - отдавайте предпочтение не вертикальному, а горизонтальному масштабированию; - закладывайте возможность легко добавить в систему дополнительные узлы; - балансируйте нагрузку между узлами, распределяйте нагрузку и не перегружайте каждый отдельно взятый узел.</p>
17 <h2>8. Закладываем тестируемость</h2>
17 <h2>8. Закладываем тестируемость</h2>
18 <p>Важно, чтобы система либо её компоненты могли тестироваться с целью определения, соответствует ли наше приложение необходимым требованиям. Для этого: - внедрите механизмы для имитации данных; - добавьте возможность автоматизации тестирования интерфейса; - процессы, работающие с наборами данных, должны быстро обрабатывать наборы небольших размеров.</p>
18 <p>Важно, чтобы система либо её компоненты могли тестироваться с целью определения, соответствует ли наше приложение необходимым требованиям. Для этого: - внедрите механизмы для имитации данных; - добавьте возможность автоматизации тестирования интерфейса; - процессы, работающие с наборами данных, должны быстро обрабатывать наборы небольших размеров.</p>
19 <h2>9. Внедряем интероперабельность</h2>
19 <h2>9. Внедряем интероперабельность</h2>
20 <p>Хорошо ли созданная вами система взаимодействует с другими? Если нет, то стоит подумать об<strong>интероперабельности</strong>. Ключевые аспекты интероперабельности - интерфейсы, форматы, коммуникационные протоколы. Не менее важна и стандартизация.</p>
20 <p>Хорошо ли созданная вами система взаимодействует с другими? Если нет, то стоит подумать об<strong>интероперабельности</strong>. Ключевые аспекты интероперабельности - интерфейсы, форматы, коммуникационные протоколы. Не менее важна и стандартизация.</p>
21 <p>Итак: - старайтесь использовать открытые стандарты, а если это невозможно - опубликуйте стандарты, которые используете; - чем больше сторонних систем поддерживают приложение, тем лучше.</p>
21 <p>Итак: - старайтесь использовать открытые стандарты, а если это невозможно - опубликуйте стандарты, которые используете; - чем больше сторонних систем поддерживают приложение, тем лучше.</p>
22 <h2>10. Обеспечиваем прозрачность при устранении неполадок</h2>
22 <h2>10. Обеспечиваем прозрачность при устранении неполадок</h2>
23 <p>Если возникают проблемы и сбои, задумайтесь, насколько легко отследить ошибку и воспроизвести её? Тут важны следующие моменты: - фиксируйте все ошибки; - пусть трассировка стека будет простой для понимания; - включите в лог все данные, нужные для повторного воспроизведения ошибки; - обеспечьте возможность включения и выключения отладочных логов; - процесс, вызвавший ошибку, должен легко отслеживаться через всё приложение.</p>
23 <p>Если возникают проблемы и сбои, задумайтесь, насколько легко отследить ошибку и воспроизвести её? Тут важны следующие моменты: - фиксируйте все ошибки; - пусть трассировка стека будет простой для понимания; - включите в лог все данные, нужные для повторного воспроизведения ошибки; - обеспечьте возможность включения и выключения отладочных логов; - процесс, вызвавший ошибку, должен легко отслеживаться через всё приложение.</p>
24 <h2>11. Применяем популярные фреймворки</h2>
24 <h2>11. Применяем популярные фреймворки</h2>
25 <p>Если вы используете сторонние библиотеки, у них должно быть активное сообщество. Чем оно больше, тем проще работать, т. к. большинство проблем, скорее всего, уже было решено до вас другими пользователями.</p>
25 <p>Если вы используете сторонние библиотеки, у них должно быть активное сообщество. Чем оно больше, тем проще работать, т. к. большинство проблем, скорее всего, уже было решено до вас другими пользователями.</p>
26 <p>Признаки активного приложения: - с фреймворком связано много плагинов и проектов, имеющих открытый исходный код; - есть активный репозиторий на GitHub; - есть достаточно много вопросов и ответов на StackOverflow; - можно без проблем найти книги, блоги и руководства.</p>
26 <p>Признаки активного приложения: - с фреймворком связано много плагинов и проектов, имеющих открытый исходный код; - есть активный репозиторий на GitHub; - есть достаточно много вопросов и ответов на StackOverflow; - можно без проблем найти книги, блоги и руководства.</p>
27 <h2>12. Делаем развёртывание простым</h2>
27 <h2>12. Делаем развёртывание простым</h2>
28 <p>Развёртывание в разных окружениях обходится недёшево. Если продукт трудно развернуть, увеличиваются сроки релиза, затрудняется реагирование на внесение изменений и исправление ошибок.</p>
28 <p>Развёртывание в разных окружениях обходится недёшево. Если продукт трудно развернуть, увеличиваются сроки релиза, затрудняется реагирование на внесение изменений и исправление ошибок.</p>
29 <p>Советы: - добавьте автоматическое развёртывание по сценарию; - сведите физический размер системы к возможному минимуму; - упростите процесс написания автоматизированных тестов; - упростите откат системы (если что-то пойдёт не так, это значительно облегчит вам жизнь).</p>
29 <p>Советы: - добавьте автоматическое развёртывание по сценарию; - сведите физический размер системы к возможному минимуму; - упростите процесс написания автоматизированных тестов; - упростите откат системы (если что-то пойдёт не так, это значительно облегчит вам жизнь).</p>
30 <p>По материалам статьи "<a>12 Attributes of a Good Web Application Architecture</a>".</p>
30 <p>По материалам статьи "<a>12 Attributes of a Good Web Application Architecture</a>".</p>
31  
31