Год назад мой дорогой друг попросил меня разработать простое веб-приложение.

Год спустя мы анонсировали Epk.Cloud, замечательное веб-приложение, которое позволяет артистам и группам с легкостью создавать собственные электронные материалы для прессы.

Мои потребности

Я всегда работал с командами. Всегда были руководитель проекта, архитектор программного обеспечения и заказчик. На этот раз у меня их не было.

Мне нужно было работать с простым языком программирования, простой базой данных и простым хранилищем.

Я решил посвятить одну неделю каждому языку / фреймворку / базе данных, прежде чем приступить к разработке веб-приложения.

Я принял во внимание следующие аспекты моего опыта разработчика:

  1. Мне нужно разработать и все веб-приложение в одиночку.
  2. У меня очень маленький бюджет.
  3. Мне нужен язык, который позволит мне легко представить нового разработчика.
  4. Я должен быстро разработать и выпустить множество новых функций.
  5. Он должен быть стабильным и безопасным.

Мои недели

1 неделя

  1. Серверная часть: PHP
  2. Интерфейс: PHP + HTML.
  3. База данных: MySql
  4. Хостинг: DigitalOcean Droplet

Что ж, я начал с очевидного «стартового набора для веб-разработчиков».
В прошлом у меня был большой опыт работы с PHP и MySql, поэтому мне было очень просто разрабатывать с этим технический стек.
Мне просто не нравилось разрабатывать весь интерфейс с помощью HTML и PHP, но без прочной структуры, лежащей в основе, я не был слишком уверен в безопасности и стабильности.

2 неделя

  1. Серверная часть: Laravel (PHP)
  2. Интерфейс: Blade + Vue.js
  3. База данных: MySql
  4. Хостинг: DigitalOcean Droplet

Laravel разрешил мои сомнения по поводу безопасности и стабильности.
Код стал чище, и разработка всего интерфейса с помощью Blade и Vue.js была потрясающим опытом.
Но я хотел попробовать что-то более интересное.

3 неделя

  1. Серверная часть: Ruby On Rails
  2. Интерфейс: ERB
  3. База данных: MySql
  4. Хостинг: DigitalOcean Droplet

Что ж, Ruby on Rails потрясающий. Шутки в сторону. Язык Ruby элегантен и позволяет мне развиваться очень быстро. До пятой недели это был мой первый выбор.

4 неделя

  1. Серверная часть: Python Flask API.
  2. Интерфейс: React.js
  3. База данных: MySql
  4. Хостинг: DigitalOcean Droplet

Мне очень понравился Flask. Он напомнил мне Синатру Рубина некоторыми чертами. Самая большая проблема с Python ... это мои слабые познания в Python.
Как бывшему разработчику Javascript / Ruby, выучить его было не так уж и сложно, но я просто еще не чувствовал себя комфортно, используя его для такого большого приложения.

Обещаю, я буду больше работать над Python!

5 неделя

  1. Серверная часть: Express.js (Node.js)
  2. Интерфейс: React.js
  3. База данных: RethinkDB
  4. Хостинг: DigitalOcean Droplet

Совершенно другой подход. Я решил попробовать настроить полный стек JavaScript.
Я попробовал RethinkDB вместо MongoDB по простой причине: мне было удобнее с ним. Не знаю почему, но ReQl - действительно хороший язык запросов, и у меня все еще были запросы с левым соединением (у MongoDB их нет).

RethinkDB научил меня работать с базами данных NoSql. Для меня это было немного сложно из-за MySql. Я написал несколько библиотек для решения некоторых проблем, с которыми я никогда не сталкивался с базами данных SQL.

React.js - это камень. Это «Ruby on Rails» интерфейсных фреймворков.
Легко изучить, быстро и с сильным сообществом. Это потрясающе.

6 неделя

  1. Серверная часть: Firebase (без сервера!)
  2. Интерфейс: React.js
  3. База данных: Firebase Firestore
  4. Хостинг: хостинг Firebase.

Я хотел попробовать другой подход (снова). Бессерверное веб-приложение, использующее Google Firebase.
Я обнаружил, что с его помощью можно очень быстро разрабатывать. Стабильный. Безопасный. Но возникла проблема: хостинг Google не обрабатывает поддомены с подстановочными знаками.

7 неделя

  1. Серверная часть: Firebase
  2. Интерфейс: React.js
  3. База данных: Firebase Firestore
  4. Хостинг: Heroku

Моя последняя неделя. Наконец-то я нашел идеальный стек для своего стартапа. Heroku имеет множество функций, которых пока нет в Google Firebase (поддержка поддоменов с подстановочными знаками, откат приложений и т. Д.).
React.js отлично работает с Google Firebase SDK.
Все написано на JavaScript, так что будет действительно легко ввести нового разработчика.
Firebase и Heroku также очень дешевы. Они хорошо масштабируются и помогают мне контролировать свой бюджет с помощью своих инструментов ценообразования.
Heroku делает развертывание приложений волшебным. Я люблю это.

Вердикт

Спустя семь недель я наконец нашел идеальный стек для своего стартапа.
Если бы у меня было больше бюджета, времени, команды, я бы, вероятно, предпочел Ruby on Rails API, React.js и Postgre SQL + RethinkDB. Посмотрим, как будет развиваться это приложение!

Epk.Cloud в настоящее время работает со следующей архитектурой:

  • Два динамометра Heroku
  • Одна база данных Firebase Firestore
  • Бессерверный бэкэнд (еще раз спасибо, Heroku и Google)
  • Одностраничное приложение React.js для внешнего интерфейса

Я обновлю этот пост, как только представлю новые функции в архитектуре Epk.Cloud!

Обновление №1 (16.02.2018)

Epk.Cloud был официально выпущен как бета-версия, и я уже работаю над полностью новой архитектурой.
Некоторые спойлеры:

  • AWS DynamoDB
  • AWS лямбда
  • AWS EC2
  • GraphQl

~ До скорой встречи!