Як написати pet project з backend без досвіду backend ?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Спойлер дуже просто.

Привіт я Вова, Мій досвід 7 років розробки додатків для OS Android, я підтримую думку що в сучасному світі немає різниці якою мовою програмування що писати. По факту ми просто вибираємо мову враховуючи які фреймворки, бібліотеки, утиліти та інструменти є для мови програмування. Та ситуацію на ринку з відповідними спеціалістами. Плюс все ще є питання релігії конкретної людини що приймають рішення (CTO, Head of ...., Tech ..., ....). Паралельно я хочу прикладом показати іншим програмістам що не важливо що вони пишуть зараз вони можуть написати що завгодно без значних зусиль.

Мій проект — mixdrinks.org — бібліотека коктейлів з рецептами. Глянути можна тут.

Проект open source — код тут

Тут я буду писати тільки про backend, але на kotlin написано Mobile клієнт для android та IOS. Як доведу це діло до гарного стану напишу про це теж.

Стек проекту

Language: Kotlin

Framework: Ktor

Database: Postgresql

SQL framework: Exposed

Hosting: Digital ocean

Зробка: Gradle

Інші слова які описують проект: Docker. Якщо цікавить більш детально то вам сюди

Стаття буде в форматі відповіді на питання що у вас виникнуть:

Який мову програмування взяти для цього вашого backend?:

Ту яку знаєте. Я взяв Kotlin тому що я її знаю.

Який framework взяти ?

Якщо ви пишете на чомуть більш менш популярному то або розробник або спільнота вже зробили всі інструменти для того щоб на вашій мові можна було написати все що завгодно. Різниця тільки в тому наскільки це популярно в середині спільноти та в цілому в світі. Якщо ваша задача просто написати свій pet project то візьміть це рішення. Єдине що перевірте чи є нормальна інструкція як упакувати це діло в Docker. Я взятв Ktor фреймворк від JetBrains для розробки backend на kotlin.

Hosting, де і як захостити цей ваш backend?

Це питання яке напевно найважче для людини що раніше backend не писала. Тут важливо не піддатися впливу спільноти або ж думці досвідчених backend розробників і не піти в AWS. Ми ж тут не робимо систему на сотні сервісів з десятками network груп чи чимося ще складним. Наш вибір простий digitalocean app platform. App platform вміє розгорнути сервіс з вашого DockerFile. Плюс вони вміють автоматично зробити rollback якщо з deploy щось пішло не так, також він забезпечить вам deploy без зупинки вашого сервісу (наче правильно це називається blue green deployment), ну і звісно можливість швидко зробити scale як горизонтально та і вертикально, і звісно ж є моніторинг та всі потрібні сповіщення, якщо коротко то за 5$ робить те що багато backend команд вважає big deal.

Конкретно в моєму випадку з часом я відмовився від схеми зробки на Docker Image на бочі Digital ocean і перейшов на публікацію docker image на docker hub і змінити tag на digital ocean через API. (Але для pet project я рекомендую спочатку зробити зробити, все на стороні DO а далі вже при потребі покращувати). Мої причини переїхати я розказував тут.

База даних

Якщо ви не знаєте що треба то просто беремо postgresql.

  • По ньому багато інформації
  • До нього є багато як платних так і безкоштовних інструментів
  • Для pet project її точно буде достатньо

Тут важливо не зробити помилку номер два: Не готуємо базу даних самостійно. Нічого доброго з цього не вийде. Просто візьміть на digital ocean мінімальний managed database і буде щастя. (Ще 15$ доларів в місяць, і ви замінили людей які як правило в компаніях займаються налаштування і підтримкою бази даних). В даному випадку щастя це backup, можливість в любий момент зробити scale бази даних або ж просто докинути read node.

Основні думки:

  1. Pet project треба писати на тому що знаєте і додавати якомога менше всього нового
  2. Максимально делегувати, в моєму випадку максимально багато віддати на сторону digital ocean.
  3. Чи менше перепон ви собі поставите для свого pet project тим швидше він вийде.

Який стан mixdrinks.org зараз ?

  • 23.04.2023 google search console дав нове досягнення 60 переходів з google за 28 днів.
  • Є beta версію додатків для Android та IOS
  • В проекта є повністю публічний API, включно з запитом snapshot так що можете скачати собі базу якщо воно вам треба. (Ніяких обмеження API немає але і дедосити теж не треба). Якщо вам треба доступ в базу пишіть домовимося.

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

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Мені подобається render.com — підконнектив гітхаб репо та забув.
$7 сервер та $7 база.
А от з fly.io на якому хостився раніше, були постійно якісь страждання.

Хтось там писав за AWS. Воно надто складне коли ти нічим подібним не займався. Тому краще просто заплатити та займатися фічами.

Дякую, render дійсно виглядає цікаво :) якби продукт вже не був на існуючій інфрі я б прям задумався

А щодо кількості переходів, що вам кажуть мало. Як то кажуть в індігакерському комьюніті — головне не зупинятися.

і не піти в AWS

AWS лякає бо він — великий та страшний.
Але якщо ближче ознайомитись із його сервісами то вже не так страшно. Вони пропонують більшість із того функціоналу, що дають інші та AWS це не тільки EKS та голі віртуалки на EC2
Наприклад — Cognito. Два кліка і готова аутендицікація.
А якщо далі копнути — Amplify бац і цілий бекенд де такі фітчі як аутендицікація, API до бази робляться за дві строки коду.
Багато чого є безкоштовного або не дорогого. Також є дофіга різних грантів, ваучерів і т/д

От з моменту поставити щось на віруалку і почнуться проблеми, спочатку просто постав, потім просто оновлюй просто перевірючи кожну версію на сумісність, потім просто руками додавай юзерів, потім просто зроби backup на рівні як це робить Digital ocean, і десь я думаю буде зрозуміло що все це не просто

Зачем то рекомендация не идти в AWS и пользоваться DO и там же реферальная ссылка на DO. Ни это ли основная причина? Возможно и нет, но такая подача добавляет скептицизма

Без образ, але це все робиться за один вечір на тому таки WP. 60 переходів з Google за місяць досягнення? Якщо це проект по backend без досвіду, то треба як мінімум використовувати парсери для наповнювання БД, якось опрацьовувати ті дані на сервері, щоб видавати щось нове, щоб проект мав якийсь value. Чи може я не так зрозумів цілі проекту, то вибачаюсь, можете мене поправити

Для мене pet project це як раз місце для обкатування нових технологій.

Так але якщо весь проект це нові технології то це буде вкрай важко, я за те що навчання має бути прост а не через біль і траждання

твитер помойка в которой никто не сидит

Підписатись на коментарі