Backend dasturchisi bo'lishni o'rganing

Bugungi kunda veb-taraqqiyot bir necha yil avvalgidan tubdan farq qiladi; Internetni rivojlantirishga kirishayotgan har qanday kishini osongina chalg'itadigan turli xil narsalar juda ko'p. Ushbu qadamni vizual qo'llanmalar yordamida kattaroq rasmni namoyish etishga qaror qildik va kimgadir veb-taraqqiyotda muayyan rollarda bo'lish uchun nima qilish kerakligi haqida aniq tasavvur berishga qaror qildik.

Taxminan bir hafta oldin, biz Frontend dasturchisi bo'lishni o'rganing, degan xabarimiz bor edi, unda biz Backend va DevOps uchun yangilangan yo'l xaritalarini chiqarishga va'da berdik. Ushbu va'daga amal qilgan holda, ushbu maqola zamonaviy dastur yaratuvchisi haqida. Agar siz allaqachon oldingi ishlab chiqaruvchining yo'l xaritasini tekshirmagan bo'lsangiz, unga o'ting.

Bugungi kunga qadar, orqa yo'l xaritasi shunchaki texnologiyaning tavsiyasi bo'lib, unga rioya qilish kerak bo'lgan aniq yo'nalish ko'rsatilmagan. Biz buni sizga yaxshiroq tushuncha berish uchun qadam-baqadam ko'rsatmalar bilan old tomon kabi qayta ishladik.

Biz hali ham DevOps-lar ustida ishlamoqdamiz va umid qilamanki keyingi haftada chiqaramiz. Biz bu haqda maqola ham joylashtiramiz, ammo bu erda siz yangilanishlarni tomosha qilishingiz uchun omborga havola mavjud.

Maqolaning eskizidagi tasodifiy rasm - Iltimos  ga e'tibor bermang

Keyinchalik shoshilmasdan, boshlaylik. To'liq yo'l xaritasini quydagi rasmda topishingiz mumkin, ammo men ham quyida keltirilgan har bir bosqichni tushuntirib beraman.

Keling, uni buzib tashlaymiz va quyida keltirilgan har bir bosqichni tushuntirib beramiz.

Ishni boshlashdan oldin, biz HTML / CSS haqidagi bilimlarni yuqoridagi yo'l xaritalarida sanab o'tmagan bo'lsak ham, hech bo'lmaganda ba'zi bir HTML va CSS-ni qanday yozishni bilishingiz tavsiya etiladi.

1-qadam - Til o'rganish

Til tanlashda ko'plab variantlar mavjud. Sizga qaror qilishingizni osonlashtirish uchun ularni toifalarga ajratdim. Orqa tomonni ishlab chiqishga kirishayotgan yangi boshlanuvchilar uchun ssenariy tillarini tanlashni maslahat beraman, chunki ularga talab juda ko'p va bu sizga tezkor ishlashga imkon beradi. Agar sizda oldingi ma'lumotingiz bo'lsa, siz Node.js-ni osonroq deb topishingiz mumkin va buning uchun katta ish bozori mavjud.

Agar siz allaqachon dasturiy ta'minotni ishlab chiqqan bo'lsangiz va ba'zi skript tilini bilsangiz, sizga boshqa skriptlar tilini tanlamaslikni va "Funktsional" yoki "Multiparadigm" bo'limidan biror narsani tanlamaslikni maslahat beraman. Masalan, agar siz allaqachon PHP yoki Node.js-ni bajargan bo'lsangiz, Python yoki Ruby-ga o'tmang, buning o'rniga Erlang yoki Golang-ni sinab ko'ring. Bu sizning fikringizni kengaytirishga va fikringizni yangi ufqlarga ochishga yordam beradi.

2-qadam - O'rganganingizni amalda bajaring

Amaliyotdan ko'ra yaxshiroq o'rganish usuli yo'q. O'zingizning tilingizni tanlab, tushunchalarni bilib olgandan so'ng, ularni foydalanishga olib keling. Iloji boricha ko'proq kichik dasturlarni qiling. Sizni boshlash uchun bir nechta fikrlar

  • Bosh tomonidan ishlatiladigan ba'zi buyruqlarni bajaring, masalan. larning funktsional imkoniyatlarini amalga oshirishga harakat qiling
  • JSON fayl ko'rinishida / r / dasturlash bo'yicha reddit xabarlarini olib keladigan va saqlaydigan buyruq yozing
  • JSON formatida katalog tuzilishini beradigan buyruqni yozing, masalan. jsonify dir-name sizga dir-name ichidagi tuzilishi bo'lgan JSON faylini berish uchun
  • Yuqoridagi bosqichdan JSON o'qadigan va katalog tuzilishini yaratadigan buyruq yozing
  • Har kuni bajaradigan biron bir vazifangiz haqida o'ylang va uni avtomatlashtirishga harakat qiling

3-qadam - Paket menejerini bilib oling

Tilning asoslarini tushunib etgandan so'ng va ba'zi amaliy dasturlar yaratgandan so'ng, siz tanlagan til uchun paketlar menejeridan qanday foydalanishni bilib oling. Paket menejerlari sizning ilovalaringizda tashqi kutubxonalardan foydalanishga va kutubxonalaringizni boshqalar foydalanishi uchun tarqatishga yordam beradi.

Agar siz PHP-ni tanlagan bo'lsangiz, siz Kompozitorni, Node.js-da NPM yoki Ip-kalitni, Python-da Pip-ni, Ruby-da RubyGems-ni o'rganishingiz kerak. Sizning tanlovingiz qanday bo'lishidan qat'i nazar, oldinga boring va paket menejeridan qanday foydalanishni bilib oling.

4-qadam - standartlar va eng yaxshi amaliyotlar

Har bir til o'z standartlari va eng yaxshi ishlarni bajarishga ega. Siz tanlagan til uchun ularni o'rganing. Masalan, PHP PHP-FIG va PSR-larga ega. Node.js bilan boshqa tillar uchun ham bir xil bo'lgan turli xil jamoaviy ko'rsatmalar mavjud.

5-qadam - xavfsizlik

Xavfsizlik bo'yicha eng yaxshi amaliyotlarni o'qib chiqishga ishonch hosil qiling. OWASP ko'rsatmalarini o'qing va turli xil xavfsizlik muammolarini va ularni o'zingiz tanlagan tilda qanday qilib oldini olish mumkinligini tushuning.

6-qadam - Amaliyot

Endi siz til asoslari, standartlar va eng yaxshi amaliyotlar, xavfsizlik va paketlar boshqaruvini qanday ishlatishni bilasiz. Endi oldinga boring va paketni yarating va uni boshqalarga ishlatishi uchun tarqating va shu vaqtgacha o'rgangan standartlar va eng yaxshi amaliyotlarga rioya qiling. Masalan, agar siz PHP-ni tanlagan bo'lsangiz, uni Packagist-da chiqarasiz, agar Node.js-ni tanlagan bo'lsangiz, uni Npm registrida va hokazolarda chiqarasiz.

Buni amalga oshirgandan so'ng, Github-da ba'zi loyihalarni qidirib toping va ba'zi loyihalarda bir nechta so'rovlarni oching. Buning uchun ba'zi g'oyalar:

  • Reaktor va o'zingiz o'rgangan eng yaxshi amaliyotlarni hayotga tatbiq eting
  • Ochiq masalalarni ko'rib chiqing va hal qilishga harakat qiling
  • Qo'shimcha funktsiyalarni qo'shing

7-qadam - Test haqida ma'lumot oling

Sinov uchun bir nechta turli xil sinov turlari mavjud. Ushbu turlar ularning maqsadi nima ekanligini tushunib oling. Ammo hozirda ilovalaringizda Unit Testlari va Integratsiya testlarini qanday yozishni bilib oling. Shuningdek, turli xil sinov terminologiyalarini, masalan, masxaralash, stub va boshqalarni tushuning

8-qadam - amaliy

Amaliyot uchun oldinga o'ting va shu vaqtgacha bajargan amaliy vazifalaringiz uchun birlik sinovlarini yozing, ayniqsa 6-qadamda nima qilganingizni.

Shuningdek, siz yozgan testlarning qamrovini bilib oling va hisoblang.

9-qadam - Relational Databases haqida ma'lumot oling

O'zingizning ma'lumotlar bazangizda ma'lumotlarni qanday saqlashni o'rganing. O'rganish uchun vositani tanlashdan oldin, ma'lumotlar bazasi terminologiyasini tushuning, masalan. kalitlar, indekslar, normallashtirish, qulflar va boshqalar.

Bu erda bir nechta variant mavjud. Ammo agar siz bir narsani o'rgansangiz, boshqalarga oson bo'lishi kerak. Siz o'rganmoqchi bo'lgan narsalar - MySQL, MariaDB (asosan bir xil va MySQL-ning vilkasi) va PostgreSQL. Boshlash uchun MySQL-ni tanlang.

10-qadam - Amaliy vaqt

Bu vaqtgacha siz o'rgangan barcha narsalarni foydalanish uchun ishlatish vaqti keldi.

Siz hozirgacha o'rgangan hamma narsadan foydalangan holda oddiy dastur yarating. Faqat biron bir fikrni tanlang, ehtimol oddiy blog dasturini yarating va undagi quyidagi xususiyatlarni amalga oshiring

  • Foydalanuvchi hisoblari - Ro'yxatdan o'tish va kirish
  • Ro'yxatdan o'tgan foydalanuvchi blog yozuvlarini yaratishi mumkin
  • Foydalanuvchi o'zi yaratgan barcha bloglarni ko'rish imkoniyatiga ega bo'lishi kerak
  • Ular o'zlarining bloglarini o'chirib tashlashlari kerak
  • Foydalanuvchi faqat o'zining shaxsiy bloglarini ko'rishi mumkinligiga ishonch hosil qiling
  • Ilova uchun birlik / integratsiya testlarini yozing
  • So'rovlar uchun indekslarni qo'llash kerak. Indekslar ishlatilayotganiga ishonch hosil qilish uchun so'rovlarni tahlil qiling

11-qadam - ramkani o'rganing

Loyihaga va siz tanlagan tilga qarab, sizga ramka kerak bo'lishi mumkin yoki kerak emas. Har bir tilda bir nechta turli xil variantlar mavjud, tanlangan til uchun qanday variantlar borligini ko'rib chiqing va tegishli tilni tanlang.

Agar siz PHP-ni tanlagan bo'lsangiz, men sizga Laravel yoki Symfony-ga, shuningdek, mikro-ramkalarga, Lumen yoki Slim-ga borishni maslahat beraman. Agar siz Node.js-ni tanlagan bo'lsangiz, turli xil variantlar mavjud, ammo taniqli variant Express.js

12-qadam - Amaliy vaqt

Ushbu qadamning amaliyligi uchun siz o'zingiz tanlagan ramkadan foydalanish uchun 10-qadamda o'zingiz yaratgan dasturni o'zgartiring. Shuningdek, sinovlarni, shu jumladan hamma narsani portingizga kiritganingizga ishonch hosil qiling.

13-qadam - NoSQL ma'lumotlar bazasini o'rganing

Avvalo ularning nima ekanligini, ularning nisbiy ma'lumotlar bazasidan qanday farq qilishini va nima uchun kerakligini tushunib oling. Bir nechta turli xil variantlar mavjud, tadqiqotni biroz ko'rib chiqing va ularning xususiyatlari va farqlari uchun ularni taqqoslang. MongoDB, Cassandra, RethinkDB va Couchbase-ni tanlashingiz mumkin bo'lgan ba'zi keng tarqalgan variantlar. Agar birini tanlashingiz kerak bo'lsa, MongoDB-ga o'ting.

14-qadam - Keshlash

Ilovalaringizda keshni keshlashni qanday amalga oshirishni o'rganing. Redis yoki Memcached-dan qanday foydalanishni tushuning va 12-qadamda o'zingiz o'rnatgan dasturda keshlashni amalga oshiring.

15-qadam - RESTful API-larini yaratish

RESTni tushuning va RESTful API-larni qanday qilishni o'rganing va Roy Fildingning asl qog'ozidan REST haqida ma'lumotni o'qiganingizga ishonch hosil qiling. Va agar kimdir REST faqat HTTP API-lariga tegishli bo'lsa, ular bilan kurashishingiz mumkinligiga ishonch hosil qiling.

16-qadam - Turli xil tasdiqlash usullari haqida bilib oling

Autentifikatsiya va avtorizatsiyalashning turli usullari haqida bilib oling. Ularning nima ekanligini, ular qanday farq qilishini va qachon ikkinchisidan ustun turishni bilishingiz kerak

  • OAuth - ochiq autentifikatsiya
  • Asosiy autentifikatsiya
  • Token haqiqiyligini tekshirish
  • JWT - JSON veb-tokenlari
  • OpenID

17-qadam - Xabar vositachilari

Xabar brokerlari haqida bilib oling va ularni qachon va nima uchun ishlatishni tushuning. Ko'p variantlar mavjud, ammo taniqlilari RabbitMQ va Kafka. RabbitMQ-ni hozirda qanday ishlatishni bilib oling, agar birini tanlamoqchi bo'lsangiz.

18-qadam - Qidiruv motorlar

Ilova o'sib borishi bilan aloqador yoki NoSQL ma'lumotlar bazangizdagi oddiy so'rovlar uni kesib tashlamaydi va siz qidiruv tizimiga murojaat qilishingiz kerak bo'ladi. Bir nechta variant mavjud, ularning har biri o'z farqiga ega.

19-qadam - Docker-dan qanday foydalanishni bilib oling

Docker sizning ishlab chiqarishda, OSni toza saqlashda yoki kodlash, sinovdan o'tkazishda yoki tarqatishda tezlashish kabi muhitni takrorlamasligingizdan qat'iy nazar sizning rivojlanishingizda sizga yordam berishi mumkin. Siz qidirishingiz uchun "bu menga qanday yordam beradi" degan javobni qoldiraman. Ushbu qadamda davom eting va Docker-dan qanday foydalanishni bilib oling.

20-qadam - Internet-serverlarni bilish

Agar siz bu qadar uzoqqa borgan bo'lsangiz, ehtimol oldingi bosqichlarda serverlar bilan ishlashingiz kerak edi. Ushbu qadam, asosan, turli xil veb-serverlar o'rtasidagi farqlarni aniqlash, cheklovlar va turli xil konfiguratsiya variantlarini bilish va ushbu cheklovlardan samarali foydalangan holda dasturlarni qanday yozish haqida.

21-qadam - Web Sockets-dan qanday foydalanishni bilib oling

Talab qilinmasa-da, ushbu ma'lumotni asboblar panelida olish foydalidir. Haqiqiy vaqtda veb-dasturlarni veb-rozetkalari bilan qanday yozishni va u bilan bir nechta namunaviy ilovani qanday qilishni o'rganing. Siz uni blogingiz ro'yxatidagi real vaqtda yangilanishlarni amalga oshirish uchun yuqorida ko'rsatgan blog dasturingizda ishlatishingiz mumkin.

22-qadam - GraphQL-ni o'rganing

GraphQL yordamida qanday qilib API qilishni o'rganing. Uning REST-dan qanday farq qilishini tushuning va nima uchun uni REST 2.0 deb nomlash kerak.

23-qadam - Grafik ma'lumotlar bazasiga qarang

Grafik modellar sizning ma'lumotlaringiz bilan o'zaro munosabatlarning juda moslashuvchan usulini anglatadi va grafik ma'lumotlar bazalari tez va samarali saqlash, olish va so'rashni ta'minlaydi. Neo4j yoki OrientDB-dan qanday foydalanishni bilib oling.

24-qadam - Izlanishda davom eting

Siz o'rganishni va mashq qilishni boshlaganingizdan so'ng, ushbu yo'l xaritasida biz qamrab olmagan narsalar haqida aniq tasavvurga ega bo'lasiz. Faqatgina yangi narsalarni o'rganish uchun ochiq fikr va sog'lom ishtahani saqlang.

Va esda tutingki, iloji boricha ko'proq mashq qilish. Bu boshida dahshatli ko'rinadi va siz o'zingizni hech narsani tushunmayotgandek his qilishingiz mumkin, ammo bu normal holat va vaqt o'tishi bilan o'zingizni yaxshilayotganingizni his qilasiz.

Va bu bilan, bu post tugaydi. Men bilan twitterda do'stlashish yoki elektron pochta orqali salom aytish uchun o'zingizni bepul his eting. Keyingi yangilanishlar uchun omborni tomosha qilishni unutmang. Yangiliklarni kuzatib boring, xabardor bo'lib boring; Biz bilan qoling!