

ალბათ იცი, რომ პროგრამული უზრუნველყოფის ინჟინრები ყოველთვის განიხილავენ თავიანთი აპლიკაციების front-end და back-end-ს. მაგრამ კონკრეტულად რას ნიშნავს ეს? თუ მათ შორის ტექნიკურ და ვიზუალურ დონეზე განსხვავებით ხარ დაინტერესებული სწორ ადგილას მოხვედი, რადგან ამ ბლოგში გაეცნობი ვების back-end არქიტექტურას.
Front-end არის კოდი, რომელიც შესრულებულია კლიენტის მხარისთვის. ეს კოდი (ჩვეულებრივ HTML, CSS და JavaScript) მუშაობს მომხმარებლის ბრაუზერში და ქმნის მომხმარებლის ინტერფეისს.
Back-end არის კოდი, რომელიც მუშაობს სერვერზე, რომელიც იღებს მოთხოვნებს კლიენტებისგან და შეიცავს ლოგიკას, რომ გაუგზავნოს მათ შესაბამისი მონაცემები. Back-end ასევე შეიცავს მონაცემთა ბაზას, რომელიც მუდმივად ინახავს აპლიკაციის ყველა მონაცემს. ეს ბლოგი ყურადღებას სწორედ სერვერის მხარეს არსებულ hardware-სა და software-ზე ამახვილებს, რაც ამ ყველაფერს შესაძლებელს ხდის.
კლიენტად შეიძლება ჩაითვალოს ყველაფერი, ვინც/რაც აგზავნის მოთხოვნებს back-end-ში. ისინი ხშირად ბრაუზერები არიან, რომლებიც ითხოვენ HTML და JavaScript კოდს, რომელსაც ისინი გამოიყენებენ რათა საბოლოო მომხმარებელმა ვებსაიტი აღიქვას. თუმცა, არსებობს მრავალი განსხვავებული ტიპის კლიენტი: ეს შეიძლება იყოს მობილური აპლიკაცია, სხვა სერვერზე გაშვებული აპლიკაცია ან თუნდაც ვებში ჩართული ჭკვიანი მოწყობილობა.
Back-end არის მთელი ტექნოლოგია, რომელიც საჭიროა შემომავალი მოთხოვნის დასამუშავებლად, პასუხის გენერირებისთვის და კლიენტისთვის გაგზავნისთვის. ეს ჩვეულებრივ მოიცავს სამ ძირითად ნაწილს:
სერვერი უბრალოდ კომპიუტერია, რომელიც უსმენს შემომავალ მოთხოვნებს. მიუხედავად იმისა, რომ არსებობს ამ კონკრეტული მიზნისთვის შექმნილი, ოპტიმიზირებული მანქანები, ნებისმიერ კომპიუტერს, რომელიც დაკავშირებულია ქსელთან, შეუძლია იმოქმედოს როგორც სერვერი. სინამდვილეში, შენც ხშირად იყენებ საკუთარ კომპიუტერს სერვერად აპლიკაციების შემუშავებისას.
სერვერი აწარმოებს აპლიკაციას, რომელიც შეიცავს ლოგიკას იმის შესახებ, თუ როგორ უნდა უპასუხოს სხვადასხვა მოთხოვნას HTTP-ისა და Uniform Resource Identifier (URI) საფუძველზე. HTTP და URI-ის წყვილს მარშრუტი ეწოდება, ხოლო მოთხოვნის საფუძველზე მათ შესაბამისობას – მარშრუტიზაცია.
ზოგიერთი დამმუშავებლის ფუნქცია იქნება მაკავშირებელი პროგრამა. ამ კონტექსტში, მაკავშირებელი პროგრამა არის ნებისმიერი კოდი, რომელიც შესრულებულია სერვერის მიერ მოთხოვნის მიღებასა და პასუხის გაგზავნას შორის. მაკავშირებელი პროგრამის ამ ფუნქციებმა შეიძლება შეცვალოს მოთხოვნის ობიექტი, მოითხოვოს მონაცემთა ბაზა ან სხვაგვარად დაამუშავოს შემომავალი მოთხოვნა. Middleware ფუნქციები, როგორც წესი, მთავრდება კონტროლის შემდეგ ფუნქციაზე გადაცემით, და არა პასუხის გაგზავნით.
საბოლოოდ, გააქტიურდება მაკავშირებელი ფუნქცია, რომელიც ამთავრებს მოთხოვნა-პასუხის ციკლს კლიენტისთვის HTTP პასუხის გაგზავნით.
მონაცემები, რომლებსაც სერვერი აგზავნის უკან, შეიძლება იყოს სხვადასხვა სახის. მაგალითად, სერვერმა შეიძლება გამოიყენოს HTML ფაილი, გამოაგზავნოს მონაცემები JSON-ის სახით, ან შესაძლოა მხოლოდ HTTP სტატუსის კოდი გამოაგზავნოს. ალბათ გინახავს სტატუსის კოდი „404 – Not Found“; რომელიც ჩნდება მაშინ, როცა ცდილობ ნავიგაციას URI-ზე, რომელიც არ არსებობს. მაგრამ არის კიდევ ბევრი სტატუსის კოდი, რომელიც მიუთითებს იმაზე, თუ რა მოხდა, როდესაც სერვერმა მიიღო მოთხოვნა.
მონაცემთა ბაზები ჩვეულებრივ გამოიყენება ვებ აპლიკაციების back-end-ისთვის. ეს მონაცემთა ბაზები უზრუნველყოფს ინტერფეისს, რათა მუდვმივად შეინახოს მონაცემები მეხსიერებაში. მონაცემთა ბაზაში მონაცემების შენახვა ამცირებს დატვირთვას სერვერის CPU-ს მთავარ მეხსიერებაზე და შესაძლებელს ხდის მონაცემთა აღდგენას სერვერის ავარიის ან ენერგიის დაკარგვის შემთხვევაში.
API არის პროგრამული უზრუნველყოფის სხვადასხვა კომპონენტებს შორის კომუნიკაციის მკაფიოდ განსაზღვრული მეთოდების კოლექცია. უფრო კონკრეტულად კი, ეს არის back-end-ის მიერ შექმნილი ინტერფეისი. ვებ API განისაზღვრება იმ მოთხოვნების ტიპებით, რომლებსაც ის შეუძლია გაუმკლავდეს. ეს კი მოიცავს იმ განსაზღვრულ მარშრუტებსა და იმ პასუხების ტიპებს, რომლებსაც კლიენტები იღებენ.
მოდი, ეს ყველაფერი ცოტა უფრო კონკრეტული გავხადოთ, ძირითადი ნაბიჯების მაგალითების შედგენით, რომლებიც ხდება მაშინ, როდესაც კლიენტი გზავნის მოთხოვნას სერვერზე.
ასე რომ, თუ ამ ბლოგის წაკითხვის შემდეგ დარწმუნდი, რომ Back-end Development საინტერესო და საჭირო სფეროა დაიწყე სწავლა 0-დან, შემოგვიერთდი Introduction to Programming-ის კურსზე!