În această postare vă voi arăta cum să proiectați patru exemple diferite de aplicații – o clonă SimpleNote, o clonă Twitter, o clonă Slack și un magazin de comerț electronic. Și o vom face cu cea mai tare jucărie nouă lansată la AWS re: Invent 2020.

Vă prezentăm Amplify Sandbox

Amplificați interfața de administrare a administratorului este o nouă interfață cu cod redus pentru crearea backend-urilor de aplicații care nu necesită nicio expertiză AWS. Cu toate acestea, ceea ce mulți oameni pot rata este că include și Amplify Admin un nou Sandbox minunat care vă permite să începeți fără un cont AWS.

Acest Sandbox este o versiune publică a UI Amplify Admin, care poate fi publicată, unde puteți crea și prototipa modelele de date fără a vă conecta chiar la un cont AWS!

Numai în prezent sandbox-ul Data este construit, dar în timp și celelalte categorii AWS Amplify vor fi puse la dispoziție.

Când introduceți pentru prima dată un Sandbox, sunteți lăsat într-un constructor vizual unde puteți adăuga modele, enumere și tipuri personalizate. În cea mai mare parte, veți crea doar modele.

Puteți denumi modele, adăuga câmpuri și specifica tipuri (inclusiv dacă acestea sunt opționale sau câmpuri matrice) și chiar adăugați relații unu-la-unu, unu-la-multe sau multe-la-multe între modele.

Cum sa proiectati aproape orice backend si sa il implementati

Mai mult, chiar vă permite acțiune modelele de date pe care le creați! Aceasta înseamnă că nu trebuie să porniți de la zero de fiecare dată când creați un proiect și vă puteți partaja schemele de date așa cum distribuiți esențele de cod.

Cele patru eșantioane de nisip

M-am gândit că ar fi o idee minunată să demonstreze cât de puternic este acest lucru, schițând patru exemplare de sandbox-uri pe care le poți folosi:

  • A note app (inspirată de aplicația gratuită pentru luarea de note Notă simplă)
  • A conversație aplicație (inspirată de Slack)
  • A social media aplicație (inspirată de Twitter)
  • Un comerț electronic backend (inspirat de fiecare experiență de cumpărături)

Cum să creați diagrame de relații cu entități

Amplifier Admin UI face mai ușor să începeți, dar merită să faceți o planificare înainte de a începe.

Modul testat de timp pentru a face acest lucru este de a desena diagrame de relații de entitate. Am ales să folosiți Lucidcharts pentru al nostru, dar puteți utiliza orice instrument de diagramare pentru a face acest lucru.

image.png

Aplicația Notes

Aceasta este o aplicație minimă pe care o folosesc personal în fiecare zi, așa că îmi place pentru simplitate. Avem două modele: Note și Tag-uri și o singură relație între mai mulți pentru a interoga cu ușurință.

Puteți extinde acest lucru oferind editare colaborativă, bazată pe roluri, care este disponibilă odată cu implementarea acestui model. De asemenea, ar trebui să utilizați biblioteci DataStore din partea clientului pentru a vă asigura că notele dvs. funcționează offline.

Puteți vedea Sandbox aici: https://sandbox.amplifyapp.com/schema-design/1c782f02-1fe7-4785-9a02-22a27cc96d0d/clone. Rețineți că folosim un sistem bidirecțional multe la multe relație aici între modele, deoarece notele pot avea zero sau mai multe etichete și invers.

image.png

Clona Slack

Mulți dintre noi folosim aplicații de chat pentru serviciu, așa că suntem familiarizați cu acest caz de utilizare a aplicației din partea utilizatorului.

Noile nuanțe aici sunt că fiecare mesaj aparține unui canal și unui utilizator și că fiecare utilizator poate crea canale și se poate alătura acestora. Deci, există o relație interesantă pe trei căi între cele trei modele primare.

Puteți vedea Sandbox aici: https://sandbox.amplifyapp.com/schema-design/5f863684-fd1e-41b4-bca1-36c2271e21a1/clone. Canal este cel mai complex model de aici – observați cum utilizăm pe deplin toate tipurile de relații disponibile în Sandbox:

  • Canalele pot avea mulți Utilizatorii și utilizatorii se pot alătura mulți Canale
  • Canalele pot fi create numai de unu Utilizator și nu există nicio cerință de a urmări ce canale a creat un anumit utilizator
  • Canalele pot avea mulți Mesaje, dar fiecare mesaj poate aparține numai unu Canal
image.png

Clona Twitter

Social media este adesea unul dintre cele mai complexe modele de date de modelat. Implementăm aplicația socială minimă viabilă – un Tweet și un model de utilizator este tot ce oferim.

Cu toate acestea, Tweet-ul în sine are un set complex de relații. Are un utilizator autor și un set de aprecieri, răspunsuri și citate care trebuie modelate.

Alte modificări pe care le puteți lua în considerare pentru această aplicație: oferirea altor tipuri de tweets, inclusiv sondaje, imagini și videoclipuri, crearea de reclame și mesaje directe.

Puteți vedea Sandbox aici: https://sandbox.amplifyapp.com/schema-design/ad5b5b7e-f207-42d1-92b1-0ccef056a26b/clone. Rețineți că recursivitatea este implementată aici prin modelarea de aprecieri, răspunsuri și ghilimele ca matrice ale respectivelor ID-uri de utilizator și Tweet.

image.png

Magazinul de comerț electronic

Miza este mai mare atunci când sunt bani implicați. Ținerea evidenței comenzilor și asigurarea unei experiențe excelente pentru clienți este esențială.

Modelăm un backend tipic de comerț electronic, asigurându-ne că avem modele separate pentru furnizori, produse, comenzi și clienți. Pentru a intra în nuanțele unei experiențe tipice de comandă, includem și posibilitatea de a specifica cantitățile de produse într-o singură comandă, precum și de a aplica cupoane.

Deoarece există infinit de multe variante ale experienței de comerț electronic, nu le putem modela pe toate, dar sper că acest lucru servește drept un punct de plecare suficient de bun. Împărtășiți-vă propriul dvs. dacă aveți răsuciri asupra acestui concept!

Puteți vedea Sandbox aici: https://sandbox.amplifyapp.com/schema-design/aa0e7a61-aa72-4b27-b6db-ea8e2031f95e/clone. Rețineți că complexitatea acestui model este ușor de gestionat de caracteristicile Sandbox. O comandă poate avea un singur client, dar un client poate avea mai multe comenzi.

Când configurați acest lucru pe modelul Client, Sandbox este suficient de inteligent pentru a configura automat un câmp ID client corespunzător ca „Sursa relației„pe modelul de comandă. Acest lucru va fi foarte util pentru interogările GraphQL de pe drum.

1611478626 907 Cum sa proiectati aproape orice backend si sa il implementati

Cum să implementați modelul în AWS

Odată ce ați terminat cu modelul dvs., Sandbox vă solicită să testați local descărcându-l cu Amplificați CLI. Cu toate acestea, dacă doriți doar să îl obțineți live pe AWS, puteți sări peste asta și să vă îndreptați direct către etapa „Deploy to AWS”:

1611478626 898 Cum sa proiectati aproape orice backend si sa il implementati

Odată ce ați apăsat „Conectare pentru implementare în AWS”, ați terminat! Imaginați-vă că tocmai ați creat un model de date backend real fără a scrie niciun cod și l-au implementat direct pe AWS. 🤯

1611478626 814 Cum sa proiectati aproape orice backend si sa il implementati

De aici puteți configura o personalizare suplimentară, inclusiv adăugarea autentificării, invitarea utilizatorilor și atribuirea de roluri, adăugarea regulilor de autorizare pentru fiecare model, crearea de conținut cu editorul nostru WYSIWYG și multe altele.

Dacă doriți să aflați mai multe, Ali Spittel a făcut un post de blog minunat despre cât de puternică devine interfața de utilizare Amplify Admin după ce o implementați, în timp ce acest articol a fost despre mediul Sandbox fără cont inainte de desfășurarea.

Despre Nader Dabit a scris și el Alte 10 caracteristici pe care ați putea dori să le încercați.

Cu Amplify Sandbox, este foarte ușor să modelezi și să gândești prin orice scenariu de backend al aplicației, așa că sperăm că aceste exemple îți pot crea creativitatea. Dacă aveți solicitări sau trimiteri, te rog anunta-ma!