Патоказ
Backend Developer
-
-
Пред да започнеш со развој на серверски апликации, важно е да разбереш како се поврзуваат уредите и како се разменуваат податоци преку интернет. Кога корисникот отвора веб-страница или испраќа форма, неговиот уред испраќа барање, серверот го обработува и враќа одговор. Познавањето на оваа комуникација ќе ти помогне полесно да ги разбереш програмските јазици, серверите, базите на податоци и API-сервисите.
Бесплатни материјали
Клиент е апликација или уред што испраќа барање, а сервер е систем што го прима барањето, го обработува и враќа одговор. Веб-прелистувачот најчесто е клиент, додека серверската апликација може да презема информации од база на податоци, да проверува кориснички дозволи или да зачува нови записи. Разбирањето на овие улоги е основа на backend програмирањето.
Бесплатни материјали
HTTP е протокол за размена на барања и одговори меѓу клиент и сервер. Методите
GET,POST,PUT,PATCHиDELETEозначуваат каква операција се бара, а статусните кодови, како200,201,404и500, го опишуваат резултатот. HTTPS ја заштитува комуникацијата со шифрирање преку TLS. Како backend програмер, ќе работиш со HTTP речиси секојдневно.Бесплатни материјали
- НаписПреглед на HTTP
- НаписHTTP методи
- НаписHTTP статусни кодови
- НаписКако работи HTTPS?
DNS ги поврзува имињата на домените со соодветните мрежни адреси. Доменот е препознатливото име преку кое се пристапува до веб-страница, а веб-хостингот е услуга што обезбедува серверски ресурси за нејзиното работење. Научи и што се IP-адреси, порти, SSL/TLS-сертификати и обратен посреднички сервер (reverse proxy), бидејќи овие поими ќе ги среќаваш при објавување апликации.
Бесплатни материјали
- НаписКако работи DNS?
- НаписШто е веб-сервер?
-
За да создаваш backend апликации, треба добро да познаваш барем еден програмски јазик. Научи да користиш променливи, услови, циклуси, функции, објекти, низи, модули и обработка на грешки. Потоа премини на асинхроно програмирање, работа со датотеки и комуникација со други услуги. Во овој патоказ главниот пример е JavaScript со Node.js, но истите основи може да се применат и со други јазици.
За оваа тема сè уште нема додадени материјали.
JavaScript може да се извршува во веб-прелистувач, но и на сервер преку Node.js. За backend развој особено се важни функциите, објектите, модулите,
Promise,async/awaitи обработката на исклучоци соtry/catch. Со овие знаења ќе можеш да примаш барања, да обработуваш податоци и да повикуваш надворешни сервиси.Бесплатни материјали
- Напис: JavaScript
- Документација: JavaScript на MDN
TypeScript го надградува JavaScript со систем за типови. Со него можеш да ги дефинираш типовите на променливите, параметрите и повратните вредности на функциите. Ова помага одредени грешки да се откријат за време на развојот и го олеснува одржувањето на поголеми проекти. Најдобро е прво да ги совладаш основите на JavaScript.
Бесплатни материјали
- Офиц. стр.: TypeScript за почетници
- Прирачник: TypeScript Handbook
Backend апликации може да се создаваат и со PHP, Python, Java, C#, Go и други јазици. На пример, PHP често се користи за веб-системи и WordPress, додека Python е популарен за веб-апликации, автоматизација и обработка на податоци. Ова се алтернативни насоки, а не дополнителни задолжителни чекори во патоказот за Node.js.
Бесплатни материјали
-
-
-
Backend програмерите често работат со сервери преку терминал. Научи да се движиш низ папки, да создаваш и уредуваш датотеки, да извршуваш програми и да читаш пораки за грешки. Важно е да ги разбереш и основите на процесите, корисничките дозволи и променливите на околината. Не мора веднаш да станеш системски администратор, но терминалот треба да ти биде позната алатка.
За оваа тема сè уште нема додадени материјали.
Linux често се користи на веб-сервери. Почни со наредбите
pwd,ls,cd,mkdir,cp,mv,rm,catиgrep. Потоа научи за дозволите на датотеките, процесите и користењетоsshза поврзување со оддалечен сервер. Внимавај со наредбите што бришат или менуваат датотеки.Бесплатни материјали
Променливите на околината се вредности што апликацијата ги чита од околината во која се извршува. Преку нив можеш да поставиш порта, адреса за поврзување со база на податоци или конфигурација за надворешна услуга, без да ги запишуваш директно во програмскиот код. Тајните податоци не треба да се објавуваат во Git-складиште.
Бесплатни материјали
-
Git е систем за контрола на верзии што ги следи промените во датотеките на еден проект. Тој овозможува да го зачуваш напредокот, да се вратиш на претходна верзија и да работиш со други програмери. Запознај се со
git init,git add,git commit,git status,git branch,git mergeиgit pull.Бесплатни материјали
- КнигаPro Git
- КурсОснови на Git
GitHub е платформа за чување и соработка на Git-проекти. Со него можеш да објавуваш код, да пријавуваш проблеми преку Issues и да предложуваш промени преку Pull Requests. Научи и што прави датотеката
.gitignore, за да не испраќаш непотребни датотеки, лозинки или локални конфигурации во складиштето.Бесплатни материјали
- Офиц. стр.Почни со GitHub
-
-
-
Node.js е околина што овозможува JavaScript да се извршува надвор од веб-прелистувачот. Со него можеш да создаваш сервери, API-сервиси, алатки и апликации што работат со датотеки и бази на податоци. Особено е корисен за апликации со многу влезно-излезни операции, како мрежна комуникација и работа со база на податоци.
console.log('Здраво од Node.js!');Бесплатни материјали
- Офиц. стр.: Вовед во Node.js
- Документација: Node.js
Серверите често чекаат одговор од база на податоци, датотека или надворешен API. Со асинхроното програмирање, Node.js може да продолжи со друга работа додека траат таквите операции. Научи како функционираат настаните,
Promise,async/awaitи обработката на грешки во асинхрон код.Бесплатни материјали
npm е алатка за управување со JavaScript пакети. Со неа можеш да инсталираш библиотеки, да управуваш со зависностите и да извршуваш наредби дефинирани во
package.json. Разбери ја и улогата наpackage-lock.json, како и разликата меѓу пакети потребни при извршување и пакети што се користат само при развој.npm init -y npm install expressБесплатни материјали
- Офиц. стр.Што е npm?
-
Express.js е рамка за Node.js што го поедноставува создавањето веб-сервери и API-сервиси. Со него можеш да дефинираш рути, да обработуваш HTTP барања, да читаш податоци од клиентот и да испраќаш одговори. Express е добар избор за учење бидејќи овозможува да се види како е составена серверската апликација, без премногу однапред зададена структура.
import express from 'express'; const app = express(); app.get('/api/zdravo', (req, res) => { res.json({ poraka: 'Здраво!' }); }); app.listen(3000);Примерот користи ES-модули. За датотека со наставка
.js, постави"type": "module"воpackage.json.Бесплатни материјали
- Офиц. стр.: Express.js
- Пример: Hello World во Express
- Курс: Express преку MDN
Рутите определуваат која функција ќе се изврши за дадена веб-адреса и HTTP метод. Middleware е функција што учествува во обработката на барањето пред да се испрати конечен одговор. Се користи за читање JSON-податоци, проверка на дозволи, запишување логови и обработка на грешки.
Бесплатни материјали
- Документација: Рутирање во Express
- Документација: Користење middleware
Секој сервер треба правилно да реагира кога некоја операција нема да успее. Научи да разликуваш грешка предизвикана од погрешно барање од проблем во серверската апликација. Испраќај соодветен HTTP статус и разбирлива порака, но не откривај доверливи технички детали во одговорот кон корисникот.
Бесплатни материјали
- Документација: Обработка на грешки во Express
-
-
-
Базата на податоци овозможува трајно чување и организирање информации. Релационите бази ги организираат податоците во табели поврзани преку клучеви. SQL е јазик за создавање, читање, изменување и бришење податоци. Пред да започнеш да користиш библиотеки за работа со бази, научи да пишуваш основни SQL-барања.
SELECT id, name FROM users WHERE active = true;Бесплатни материјали
- КурсSQLBolt
- КурсSQL Tutorial
PostgreSQL е систем за управување со релациони бази на податоци. Поддржува SQL, ограничувања, трансакции, индекси и напредни можности за пребарување. Почни со создавање база и табели, внесување записи и поврзување на серверска апликација со базата. Подоцна научи да правиш резервни копии и да ги враќаш податоците.
Бесплатни материјали
- Офиц. стр.PostgreSQL упатство
- Офиц. стр.PostgreSQL документација
Разбери што се примарен клуч, надворешен клуч и релации еден-на-еден, еден-кон-повеќе и повеќе-со-повеќе. Индексите можат да го забрзаат пребарувањето, но имаат и цена при запишување и одржување. Трансакциите овозможуваат повеќе поврзани операции да се извршат како целина или да се поништат ако се појави грешка.
Бесплатни материјали
- Документација: JOIN во PostgreSQL
- Документација: Трансакции
- Документација: Индекси
-
ORM (Object-Relational Mapping) е пристап што овозможува работа со релациона база преку објекти и програмски функции. ORM-алатките можат да го олеснат развојот, но не ја заменуваат потребата да разбираш SQL и како работи базата. Миграциите служат за контролирано менување на структурата на базата, на пример кога додаваш нова колона или табела.
За оваа тема сè уште нема додадени материјали.
Prisma ORM е алатка за JavaScript и TypeScript апликации. Овозможува да ги дефинираш моделите на податоци, да создаваш миграции и да извршуваш типизирани барања до базата. Често се користи со Node.js и PostgreSQL. Научи како се дефинираат моделите, релациите и миграциите и како се користи Prisma Client.
Бесплатни материјали
- Офиц. стр.Prisma ORM
- Офиц. стр.Prisma Migrate
-
-
-
API (Application Programming Interface) е договорен начин на комуникација меѓу различни програми и услуги. Во backend развојот, API најчесто прима HTTP барања, обработува податоци и враќа одговор во JSON формат. На пример, мобилна апликација може преку API да побара листа на задачи, да создаде нов запис или да промени постоечки.
Бесплатни материјали
- НаписШто е API?
REST е архитектонски пристап за создавање веб-услуги. Во REST API ресурсите се претставени преку адреси, како
/api/tasks, а HTTP методите определуваат што сака да направи клиентот. Научи како се користатGET,POST,PUT,PATCHиDELETE, како се враќаат статусни кодови и како се прават филтрирање, страничење и проверка на податоците.GET /api/tasks GET /api/tasks/15 POST /api/tasks PATCH /api/tasks/15 DELETE /api/tasks/15Бесплатни материјали
- НаписREST на MDN
- НаписHTTP методи
JSON е текстуален формат за размена на структурирани податоци. Често се користи за одговорите од API бидејќи е лесен за читање и е поддржан од многу програмски јазици. Научи да работиш со објекти, низи, броеви, логички вредности и
null, како и да ги претвораш JSON-податоците во програмски објекти.{ "id": 15, "title": "Научи backend", "completed": false }Бесплатни материјали
- НаписШто е JSON?
Добрата API-документација објаснува кои адреси и методи постојат, какви податоци се испраќаат и какви одговори се очекуваат. OpenAPI е спецификација за опишување HTTP API, а алатки како Swagger UI можат да прикажат интерактивна документација. Документирањето ја олеснува соработката меѓу frontend и backend програмерите.
Бесплатни материјали
GraphQL е алтернативен пристап за работа со API преку кој клиентот може да наведе кои податоци му се потребни. Корисен е во одредени апликации со сложени податочни структури, но не мора да го изучуваш пред да создадеш неколку добри REST API-проекти.
Бесплатни материјали
- Офиц. стр.Основи на GraphQL
-
Автентикацијата проверува кој е корисникот, а авторизацијата определува што смее да прави. На пример, најавен корисник може да ги гледа сопствените задачи, но не и приватните задачи на друг корисник. Научи да создаваш систем за регистрација и најава, безбедно да управуваш со сесии и да проверуваш дозволи при секое чувствително барање.
За оваа тема сè уште нема додадени материјали.
Сесијата му овозможува на серверот да ја следи најавата на корисникот низ повеќе HTTP барања. Колачињата можат да зачуваат идентификатор на сесија во веб-прелистувачот. Разбери ги атрибутите
HttpOnly,SecureиSameSite, рокот на важност и потребата од заштита од CSRF, особено кога најавата се одржува со колачиња.Бесплатни материјали
- Напис: HTTP колачиња
- Препораки: OWASP – Управување со сесии
JWT е формат за пренос на потпишани информации, кој може да се користи и за пренесување податоци поврзани со автентикација. OAuth 2.0 е рамка за делегиран пристап, а OpenID Connect додава слој за утврдување на идентитетот. Овие технологии не се замена една за друга. Прво разбери ги обичните сесии, па потоа премини на токени и надворешни даватели на најава.
Бесплатни материјали
- НаписJWT
- Офиц. стр.OAuth 2.0
- Офиц. стр.OpenID Connect
-
-
-
Backend апликацијата е одговорна за заштитата на податоците и серверските операции. Секој податок што пристигнува од клиентот треба да се смета за недоверлив додека не се провери. Научи за SQL injection, XSS, CSRF, контролата на пристап, ограничување на барања и безбедно управување со лозинки и тајни клучеви. Безбедноста треба да биде дел од развојот од самиот почеток.
Бесплатни материјали
- Препораки: OWASP Cheat Sheet Series
- Преглед: OWASP API Security Top 10
- Препораки: Безбедно чување лозинки
Валидацијата проверува дали добиените податоци имаат правилен формат и дозволени вредности. На пример, серверот треба да провери дали е-поштата има прифатлива форма и дали корисникот има право да ја менува одредената задача. Проверките во frontend не се доволни: истите важни правила мора да се спроведуваат и на серверот.
Бесплатни материјали
- Препораки: OWASP – Input Validation
CORS е механизам што преку HTTP-заглавија му укажува на веб-прелистувачот кои други извори смеат да читаат одговори од серверот. Често се користи кога frontend и backend се поставени на различни домени или порти. CORS не е замена за автентикација и авторизација, затоа што не ги спречува сите видови барања кон серверот.
Бесплатни материјали
- НаписШто е CORS?
-
Покрај релационите бази, постојат и NoSQL системи што користат различни модели за складирање податоци. Во некои проекти тие можат да бидат соодветен избор, но не се задолжителни ако веќе користиш PostgreSQL. Важно е да ја разбереш разликата меѓу релационен и документен модел и да избираш според потребите на апликацијата.
За оваа тема сè уште нема додадени материјали.
MongoDB е документно ориентирана база на податоци што чува записи како документи со структура слична на JSON. Може да биде корисна кога податоците природно се претставуваат како документи. Научи основни CRUD операции, индекси и модел на податоци, а потоа спореди кога PostgreSQL или MongoDB е подобар избор за конкретен проект.
Бесплатни материјали
- Офиц. стр.: MongoDB документација
- Курсеви: MongoDB University
-
-
-
Кеширањето е привремено зачувување резултати за да не се пресметуваат или преземаат повторно при секое барање. На пример, често побарувана листа може да се прочита од кеш наместо повторно од базата. Ова може да ја подобри брзината и да го намали оптоварувањето, но важно е да одлучиш кога зачуваните податоци треба да се обноват или избришат.
За оваа тема сè уште нема додадени материјали.
Redis е систем за чување податоци во меморија што често се користи за кеширање, ограничување на барања и поддршка на редици со задачи. Научи да зачуваш вредност, да ја прочиташ, да поставиш рок на важност и да ја избришеш кога податоците ќе се променат. Не користи кеш само затоа што е достапен: прво утврди што навистина ја забавува апликацијата.
Бесплатни материјали
- Офиц. стр.: Почни со Redis
- Упатство: Redis како складиште на податоци
-
Тестирањето помага навреме да се откријат грешки и да се провери дали апликацијата продолжува правилно да работи по измените. Backend програмерите најчесто пишуваат тестови за функции, деловна логика, пристап до податоци и API-рути. Посебно е важно да ги проверуваш неуспешните случаи, како невалидни податоци, недозволен пристап и недостапни надворешни услуги.
За оваа тема сè уште нема додадени материјали.
Unit тестот проверува мала, издвоена функција или дел од кодот. Интеграцискиот тест проверува дали повеќе делови работат правилно заедно, на пример API-рута со база на податоци. Двата пристапи се корисни и се надополнуваат. Почни со едноставни тестови за функциите, а потоа тестирај целосни барања и одговори.
Бесплатни материјали
- Офиц. стр.Тестирање во Node.js
Vitest е алатка за автоматско тестирање JavaScript и TypeScript код. Со неа можеш да проверуваш дали функциите ги враќаат очекуваните резултати, да симулираш зависности и да ги извршуваш тестовите по секоја промена. Алтернативи се Jest и вградениот тестирач во Node.js. Избери една алатка и научи да ја користиш добро.
Бесплатни материјали
-
-
-
Како што расте апликацијата, сè потешко е целиот код да се одржува во една датотека. Подели го проектот на јасни делови, на пример рути, контролери, сервиси и пристап до податоци. Целта е секој дел да има разбирлива одговорност, а функциите да можат полесно да се менуваат и тестираат.
За оваа тема сè уште нема додадени материјали.
Контролерот го прима барањето и го подготвува одговорот. Сервисот ја извршува деловната логика, а посебен слој може да ја преземе комуникацијата со базата. Ова е еден практичен начин за организирање на проектот, не единствено правило. Избери структура соодветна на неговата големина и сложеност.
Бесплатни материјали
Монолитна апликација ги содржи главните функционалности во една целина што се развива и објавува заедно. Микросервисите ги делат функционалностите на повеќе независни услуги, што носи и дополнителна сложеност при комуникација, тестирање и одржување. За првите проекти, добро организиран монолит најчесто е поедноставен избор.
Бесплатни материјали
- НаписМикросервиси
-
Некои операции траат подолго и не треба да го задржуваат HTTP одговорот. На пример, испраќање повеќе е-пораки, обработка на слики или создавање извештај може да се извршува во позадина. Научи ја разликата меѓу обично асинхроно извршување и посебен процес што обработува задачи од редица.
За оваа тема сè уште нема додадени материјали.
Редицата со задачи чува работа што треба да ја преземе посебен процес (worker). Ова овозможува повторен обид ако задачата не успее, ограничување на бројот истовремени операции и подобра распределба на оптоварувањето. BullMQ е една од алатките што може да се користат со Node.js и Redis.
Бесплатни материјали
- Офиц. стр.BullMQ
Закажаните задачи се извршуваат во определено време или интервал. На пример, апликацијата може секоја ноќ да прави извештај или периодично да чисти истечени записи. Запознај се со
cron, обработката на грешки и начинот на кој ќе спречиш истата задача непотребно да се изврши повеќепати.Бесплатни материјали
- Упатство: Cron задачи
-
-
-
Docker овозможува апликацијата и нејзината околина да се спакуваат во контејнер. Така полесно може да се постигне слично однесување на различни компјутери и сервери. Научи што се Docker image, container, Dockerfile, volume и мрежа. Посебно корисно е да можеш локално да стартуваш Node.js апликација заедно со PostgreSQL и Redis.
Бесплатни материјали
- Офиц. стр.Почни со Docker
- НаписШто е Docker?
Docker Compose овозможува повеќе поврзани услуги да се дефинираат во една конфигурација. На пример, можеш со една наредба да стартуваш backend апликација, база на податоци и Redis. Научи како се поставуваат портите, променливите на околината и трајното складирање податоци.
Бесплатни материјали
- Офиц. стр.Docker Compose
-
Создавањето апликација не завршува кога таа работи на твојот компјутер. Треба да научиш како безбедно да ја поставиш на сервер, да конфигурираш домен, HTTPS, променливи на околината и поврзување со база. Разбери ја разликата меѓу развојна, тестна и продукциска околина и како се објавуваат нови верзии без непотребно прекинување на услугата.
За оваа тема сè уште нема додадени материјали.
Nginx е веб-сервер што често се користи и како reverse proxy пред Node.js апликации. Може да ги прима јавните HTTP/HTTPS барања и да ги проследува до апликацијата. Научи и како да провериш дали процесот работи, каде се наоѓаат логовите и како се поставуваат безбедни дозволи и HTTPS.
Бесплатни материјали
- Офиц. стр.: Nginx за почетници
- Документација: Let’s Encrypt
CI (Continuous Integration) е процес на автоматска проверка на измените во кодот, на пример со тестирање по секое испраќање на GitHub. CD се однесува на автоматизирана испорака или објавување на апликацијата. Со GitHub Actions можеш да поставиш процес што ги инсталира зависностите, ги извршува тестовите и, кога е соодветно, ја објавува новата верзија.
Бесплатни материјали
- Офиц. стр.GitHub Actions за Node.js
- Офиц. стр.GitHub Actions
-
-
-
Апликацијата може да работи добро при локално тестирање, а сепак да има проблеми откако ќе ја користат повеќе луѓе. Научи да следиш грешки, време на одговор, искористеност на ресурси и проблеми со базата на податоци. Добро организираните логови помагаат побрзо да откриеш што се случило, но не треба да содржат лозинки, токени и други доверливи податоци.
За оваа тема сè уште нема додадени материјали.
Логовите се записи за важни настани во апликацијата. Можат да помогнат да утврдиш кога се појавила грешка, кое барање било обработено и кој дел од системот не работел правилно. За поголеми апликации постојат и алатки за собирање логови, мерења и траги на барањата, како OpenTelemetry.
Бесплатни материјали
- Офиц. стр.OpenTelemetry за JavaScript
Резервната копија е дополнителна копија на податоците што може да се искористи во случај на грешка, оштетување или губење информации. Научи да правиш резервни копии на базата и да проверуваш дали навистина може да ги вратиш. Копија што никогаш не е тестирана не е доволна гаранција дека податоците ќе можат да се обноват.
Бесплатни материјали
- Документација: Резервни копии во PostgreSQL
-
Најдобар начин да го поврзеш наученото е да создадеш сопствена апликација. Започни со систем за управување со задачи во кој корисниците можат да се регистрираат, да се најават, да создаваат проекти и да додаваат задачи. Создај REST API со Node.js и Express, зачувај ги податоците во PostgreSQL и користи Git за контрола на верзии. Потоа додај проверки на дозволи, тестови, документација и објави ја апликацијата на сервер.
За оваа тема сè уште нема додадени материјали.
Почни со основните CRUD операции, потоа додај регистрација и најава, улоги и дозволи, филтрирање, страничење и проверка на влезни податоци. Кога основната верзија ќе работи стабилно, можеш да додадеш Redis за кеширање, испраќање е-пораки во позадина и автоматски тестови при секоја промена.
Бесплатни материјали
- Идеи за проекти: Backend проекти
- Документација: Express
- Документација: PostgreSQL
-