Як написати pet project з backend без досвіду backend ?
Спойлер дуже просто.
Привіт я Вова, Мій досвід 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.
Основні думки:
- Pet project треба писати на тому що знаєте і додавати якомога менше всього нового
- Максимально делегувати, в моєму випадку максимально багато віддати на сторону digital ocean.
- Чи менше перепон ви собі поставите для свого pet project тим швидше він вийде.
Який стан mixdrinks.org зараз ?
- 23.04.2023 google search console дав нове досягнення 60 переходів з google за 28 днів.
- Є beta версію додатків для Android та IOS
- В проекта є повністю публічний API, включно з запитом snapshot так що можете скачати собі базу якщо воно вам треба. (Ніяких обмеження API немає але і дедосити теж не треба). Якщо вам треба доступ в базу пишіть домовимося.
Якби я робив pet project за принципом що треба максимально багато вивчити то таких результатів би скоріш за все не було, тому ще раз максимально все спрощуємо для того що трішки вивчити нового, проект мав чучуть успіху, та ви як автор не втрачали мотивацію розвивати проект. Якщо вам цікаво знати про розвиток проекту то підпишіться на мій twitter
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів