Бло

г
Особливості створення Web-орієнтованих систем з допомогою MEAN стек

Анотація. В статті розглянуті особливості створення веб-аплікацій за допомогою сучасних веб-технологій, аспекти вибору інструментів для досягнення мети та переваги MEAN.

Постановка проблеми. Великі продукти вимагають ретельний підбір технологій та інструментів для розробки. В багажі сучасних веб-технологій їх більш ніж достатньо для будь-якого рішення. Якщо десять років тому сайт можна було вважати чимось єдиним та цілим, то сьогодні це чітко поділені частини, кожна з яких вимагає ряд технологій та спеціалізованих працівників.

Аналіз останніх досліджень і публікацій.  Протягом усього часу стрімкого розвитку веб-технологій було випущено велику кількість книг та публікацій, зокрема праці Маріо Кашіаро, Арі Лернер та Саймон Холмс.

Постановка завдання. Основним завданням, яке поставлене при написанні статті, є аналіз веб-технологій та переваги використання MEAN для створення веб-аплікацій.

Виклад основного матеріалу. Популярність та зручність всесвітньої павутини спровокувала рушійний поштовх для розвитку Web-Технологій. Створюються нові інструменти для розробки, мови програмування, фреймворки, що дозволяють розробляти дивовижні речі, які можна використовувати через вікно браузера. Всі провідні розробники програмного забезпечення стараються розробити Web версії своїх продуктів для бізнесу, комунікації та розваг суспільства.

По мірі розвитку Інтернету бізнес-компанії почали прискіпливіше ставитися до того, як вони представлені суспільству. Для цього потрібно було приділяти більше уваги клієнтській частині веб-аплікації. Доводилось витрачати багато часу для написання каскадних таблиць стилів та клієнтського JavaScript, щоб зробити сайт цікавішим та складнішим. Ці події дали поштовх для розподілення розробки на частини. Саме тоді стали розділяти розробників прикладної та клієнтської частини.

В той час, як розробники прикладної частини акцентують свою увагу на закулісній магії, розробники клієнтської частини роблять все для приємної взаємодії користувача з сайтом.

Великий вплив на розвиток веб-технологій внесла поява різноманітних фреймворків та бібліотек. Це супроводжує тенденцію перенесення логіки аплікації з серверної частини в клієнтську. Можна розглядати це, як програмування прикладної частини в клієнтській. Найбільшу популярність серед фреймворків, які використовують цей підхід, стали – Angular, Backbone та Ember.

Однією з причини популярності такого підходу є зниження навантаження серверної частини, шляхом перенесення логіки на клієнтську. Зменшуються витрати на серверне забезпечення, так як обчислювальні роботи переносяться на сторонку клієнтського браузера.

Ці фактори вплинули на колосальний прорив у розвитку та популярності клієнтських технологій, невід’ємним інструментом яких стає JavaScript.

JavaScript, наразі, є однією з найпопулярніших мов програмування в інтернеті. Але спочатку багато професійних програмістів скептично ставилися до мови, цільова аудиторія якої складалася з програмістів-любителів. Поява AJAX змінила ситуацію та повернула увагу професійної спільноти до мови, а подальші модифікації мови за стандартами ES2015 та ES2017 внесли багато корисних можливостей, яких не вистачало для ефективного програмування. В результаті, були розроблені та покращені багато практик використання JavaScript (зокрема, тестування та налагодження), створені бібліотеки та фреймворки, поширилося використання JavaScript поза браузером.

MEAN - це абревіатура яка з складається з MongoDB, ExpressJs, Angular і NodeJs. Це набір комплексного програмного забезпечення, який використовують для веб розробки.

Плюсом MEAN є те, що він використовує в зв’язці ряд найкращих в своїй ніші веб-технологій. Та основну роль відіграє використання спільної мови програмування JavaScript. Звичайно, що кожна з відокремлених частин аплікації вимагає досконалих знавців своєї справи, але цей стек дає велику перевагу людям, які прагнуть впливати на всю розробку та зекономити час для вивчення інших мов програмування. Розглянемо кожну з цих технологій детальніше.

Node.js призначений для відокремленого виконання високопродуктивних мережних застосунків на мові JavaScript. Функції платформи не обмежені створенням серверних скриптів для веб, платформа може використовуватися і для створення звичайних клієнтських і серверних мережевих програм. Для забезпечення виконання JavaScript-коду використовується розроблений компанією Google рушій V8.

Для забезпечення обробки великої кількості паралельних запитів у Node.js використовується асинхронна модель запуску коду, заснована на обробці подій в неблокуючому режимі та визначенні обробників зворотніх викликів (callback). Як способи мультиплексування з'єднань підтримується epoll, kqueue, /dev/poll і select. Для мультиплексування з'єднань використовується бібліотека libuv, для створення пулу потоків (thread pool) задіяна бібліотека libeio, для виконання DNS-запитів у неблокуючому режимі інтегрований c-ares. Всі системні виклики, що спричиняють блокування, виконуються всередині пула потоків і потім, як і обробники сигналів, передають результат своєї роботи назад через неіменовані канали (pipe). За своєю суттю Node.js схожий на фреймворки Perl AnyEvent, Ruby Event Machine і Python Twisted, але цикл обробки подій (event loop) у Node.js прихований від розробника і нагадує обробку подій у веб-застосунку, що працює в браузері. При написанні програм для Node.js необхідно враховувати специфіку подієво-орієнтованого програмування, наприклад, замість виконання.

Express.js, або просто Express — програмний каркас розробки веб-застосунків для Node.js, реалізований як вільне і відкрите програмне забезпечення під ліцензією MIT. Він спроектований для створення веб-застосунків і API. Де-факто є стандартним каркасом для Node.js. Автор фреймворка, TJ Holowaychuk, описує його як створений на основі написаного на мові Ruby каркаса Sinatra, маючи на увазі, що він мінімалістичний, але має велику кількість плаґінів, що підключаються. Express є бекендом для програмного стека MEAN, разом з базою даних MongoDB і каркасом AngularJS для фронтенду.

MongoDB — документо-орієнтована система керування базами даних (СКБД) з відкритим сирцевим кодом, яка не потребує опису схеми таблиць. MongoDB займає нішу між швидкими і масштабованими системами, що оперують даними у форматі ключ/значення, і реляційними СКБД, функціональними і зручними у формуванні запитів. Код MongoDB написаний на мові C++ і поширюється в рамках ліцензії AGPLv3. MongoDB підтримує зберігання документів в JSON-подібному форматі, має досить гнучку мову для формування запитів, може створювати індекси для різних збережених атрибутів, ефективно забезпечує зберігання великих бінарних об'єктів, підтримує журналювання операцій зі зміни і додавання даних в БД, може працювати відповідно до парадигми Map/Reduce, підтримує реплікацію і побудову відмовостійких конфігурацій. У MongoDB є вбудовані засоби із забезпечення шардінгу (розподіл набору даних по серверах на основі певного ключа), комбінуючи який реплікацією даних можна побудувати горизонтально масштабований кластер зберігання, в якому відсутня єдина точка відмови (збій будь-якого вузла не позначається на роботі БД), підтримується автоматичне відновлення після збою і перенесення навантаження з вузла, який вийшов з ладу. Розширення кластера або перетворення одного сервера на кластер проводиться без зупинки роботи БД простим додаванням нових машин.

Angular — JavaScript-фреймворк з відкритим програмним кодом, який розробляє Google. Призначений для розробки односторінкових додатків, що складаються з одної HTML сторінки з CSS і JavaScript. Його мета — розширення браузерних застосунків на основі шаблону Модель-вид-контролер (MVC), а також спрощення їх тестування та розробки. Фреймворк працює зі сторінкою HTML, що містить додаткові атрибути і пов'язує області вводу або виводу сторінки з моделлю, яка є звичайними змінними JavaScript. Значення цих змінних задаються вручну або отримуються зі статичних або динамічних JSON-даних.

Обравши правильні технології для розробки, ми маємо гарантію того, що наша аплікаціє буде розроблена правильним шляхом. Інструменти MEAN дуже добре працюють в зв’язці та ідеально підходять для досягнення мети. Підсумовуючи можна сказати, що MEAN може підійти не для всіх рішень, через свої особливості, наприклад через документно-орієнтовану СУБД, але для конкретних завдань виправдовує довіру.


 

Як встановити Varnish + Apache2 на Ubuntu 16

Varnish — це гнучкий інструмент для прискорення роботи сервера. Не буду писати багато тексту про нього, цієї інформації більш ніж достатньо в інтернеті.

Тут я опишу процес встановлення, проблеми, які можуть виникнути і рішення.

Встановлення і налаштування веб-сервера Apache2 + php + mysql + phpmyadmin на Ubuntu16.04

Попередня саття про встановлення і базове налаштування сервера на ubuntu користується великим попитом, незважаючи на те що вона вже морально устаріла. Тому я вирішив поділитись з вами досвідом встановлення софта на Ubuntu 16.04.

Я вирішив продублювати частину інструкції з попередньої статті

Довго встановлюється windows на ноутбук з ssd.

Вирішив зробити абгрейд одного робочого ноутбука (HP ProBook 4540s Intel i5 / 6gb / 750 Gb / Radeon 2gb). Докупили планку памяті kingston на 8Gb та ssd intel на 120. 

Як ми Magento вивчали. День 3

Розваги з Magento продовжуються!

Як ми Magento вивчали. День 2.

Продовжуємо бавитися з Magento. Подекуди враження програмістів подібні на крик душі. Нічого страшного, так і має бути. 

Як ми Magento вивчали. Встановлення Magento на ubuntu

Якось ми вирішили з Magento розібратися. Було цікаво, як виглядає "first e-commerce open source platform" зсередини.

Рекурсивне видалення старих архівів в Linux по крону

Виникла проблема — на одному з серверів для збереження бекапів переповнилося місце. Через це на іншому сервері також переповнилося місце. Тому що спочатку робиться архів локально, а потім переміщується на один із серверів бекапів.

Бекап сайту с VPS на віддалений FTP сервер

Ця стаття стане в нагоді власникам сайтів на хмарних хостингах типу digitalocean або тим, хто конфігурує сервери під свої потреби без використання панелей ispmanager, cpanel, vesta і тп.

Давно хотів написати цей скрипт, але руки якось не доходили. Проте кількість сайтів на власних VPS зростає, і вручну заходити і робити бекапи почало набридати (бекап бази здійснюється автоматично кожен день скриптом automysqlbackup, а файли архівував і переміщував вручну). 

Автоматичний переклад в OYi.Engine не працює

Ця стаття призначена для наших клієнтів, в яких "... не зберігаються сторінки. Я вношу назву, натискаю "Перекласти". Натискаю "Зберегти" і отримую "Помилка валідації"."

Пояснення читайте в статті.

Хтось мусив це зробити!

Медична платформа "PeteHealth"

 

Дизайн обкладинки для книги "Столітній чоловік, що виліз у вікно і зник"

 

Платформа для референцій "LEGAL MATES"

 

FundFlow - онлайн платформа для подій

 
Розкажіть нам про свій проект!