logo

Hva er systemdesign – Lær systemdesign

Systemdesign er prosessen med å definere arkitektur, komponenter, moduler, grensesnitt og data for et system for å tilfredsstille spesifiserte krav. Det innebærer å oversette brukerkrav til en detaljert plan som veileder implementeringsfasen. Målet er å skape en godt organisert og effektiv struktur som oppfyller det tiltenkte formålet mens man vurderer faktorer som skalerbarhet, vedlikeholdbarhet og ytelse.



Mestring av systemdesign er avgjørende for alle som ønsker å bygge robuste og skalerbare systemer. Vårt omfattende Kurs i systemdesign gir deg kunnskapen og ferdighetene til å utmerke seg på dette området. Gjennom praktiske eksempler og ekspertinnsikt lærer du hvordan du effektivt kan oversette brukerkrav til detaljerte design som kan implementeres med hell.

Viktige emner for systemdesign

Hvorfor lære systemdesign?

I enhver utviklingsprosess, det være seg programvare eller annen teknologi, er det viktigste stadiet Design . Uten designfasen kan du ikke hoppe til implementeringen eller testdelen. Det samme er tilfellet med systemet også.



Systemdesign er ikke bare et viktig skritt i utviklingen av systemet, men gir også ryggraden til å håndtere eksepsjonelle scenarier fordi det representerer programvarens forretningslogikk.

Viktigheten av systemdesignfasen i SDLC

Viktigheten av systemdesignfasen i SDLC

java mvc

Fra SDLC-trinnene ovenfor er det klart at systemdesign fungerer som en ryggrad fordi uansett hvor god kodingsdelen utføres, blir det senere irrelevant hvis den tilsvarende designen ikke er bra. Så her får vi avgjørende viktig informasjon om hvorfor det blir spurt i hvert produktbasert selskap.



Mål for systemdesign

  1. Praktisk : Vi trenger et system som bør målrettes mot settet med målgrupper(brukere) som de designer.
  2. Nøyaktighet : Systemdesign ovenfor bør utformes på en slik måte at den oppfyller nesten alle krav som den er designet rundt, enten det er funksjonelle eller ikke-funksjonelle krav.
  3. Fullstendighet : Systemdesign skal oppfylle alle brukerkrav
  4. Effektiv : Systemdesignet bør være slik at det ikke skal overdrive kostnadene for ressurser eller underbruk, da det nå vi vet vil resultere i lav grundig put (output) og mindre responstid (latency).
  5. Pålitelighet : Systemet som er designet skal være i nærheten av et feilfritt miljø i en viss tidsperiode.
  6. Optimalisering : Tid og rom er sannsynligvis det vi gjør for at kodebiter for individuelle komponenter skal fungere i et system.
  7. Skalerbar (fleksibilitet) : Systemdesign bør kunne tilpasses med tiden i henhold til ulike brukerbehov til kunder som vi vet vil fortsette å endre seg i tide. Det beste eksemplet her ute er det velkjente firmaet: Nokia. Det er det viktigste aspektet ved utforming av systemer og er resultatet av hvorfor 1 av 100 startups lykkes på lang sikt, det beste eksemplet her ute er techcodeview.com.
Mål for systemdesign

Mål for systemdesign

Merk: Systemdesign hjelper oss også med å oppnå feiltoleranse, som er en programvares evne til å fortsette å fungere der selv 1 eller 2 komponenten svikter.

Nå etter å ha sett og gått gjennom målene ovenfor, la oss nå diskutere fordelene med systemdesign for å forstå det bedre ettersom fordelene nedenfor bringer forståelsen vår enda nærmere det virkelige liv.

Komponenter i systemdesign

Nedenfor er noen av hovedkomponentene i systemdesignet. diskutert i korte trekk. Den detaljerte versjonen av dette vil bli diskutert i forskjellige innlegg:

  1. Lastbalansere: Mest avgjørende komponent for skalerbarhet, tilgjengelighet og ytelsesmål for systemer.
  2. Nøkkelverdibutikker: Det er et lagringssystem som ligner på hashtabeller der nøkkelverdilagre er distribuerte hashtabeller.
  3. Blob-lagring: Blob står for binære store objekter, som navnet antyder er lagring for ustrukturerte data som YouTube og Netflix.
  4. Databaser: Det er en organisert samling av data slik at de lett kan nås og endres.
  5. Prisbegrensninger: Disse angir det maksimale antallet forespørsler en tjeneste kan oppfylle.
  6. Overvåkningsstystem: Dette er i utgangspunktet programvare der systemadministrator overvåker infrastrukturer som båndbredde, CPU, rutere, svitsjer osv.
  7. Distribuert systemmeldingskø: Transaksjonsmedium mellom produsenter og forbrukere.
  8. Distribuert unik ID-generator: Når det gjelder store distribuerte systemer, skjer det hvert øyeblikk flere oppgaver, så for å skille det tilordne en kode som tilsvarer hver hendelse.
  9. Distribuert søk: Over hvert nettsted legges viktig informasjon som besøkende vil søke i søkefeltet.
  10. Distribuerte loggingstjenester: Spore hendelsesforløp fra ende til annen.
  11. Distribuert oppgaveplanlegger: Beregningsressurser som CPU, minne, lagring osv.
Komponenter i systemdesign

Komponenter i systemdesign

dataarbeid

Systemdesign livssyklus (SDLC)

System Design Life Cycle (SDLC) er en omfattende prosess som skisserer trinnene som er involvert i å designe og utvikle et system, enten det er en programvareapplikasjon, maskinvareløsning eller et integrert system som kombinerer begge. Det omfatter en rekke faser som veileder ingeniører gjennom å lage et system som er tilpasset brukerens behov og organisasjonsmål. SDLC har som mål å sikre at sluttproduktet er pålitelig, skalerbart og vedlikeholdbart.

Fasene (stadiene) i livssyklusen for systemdesign er:

  1. Planlegger
  2. Mulighetsstudie
  3. System design
  4. Gjennomføring
  5. Testing
  6. Utplassering
  7. Vedlikehold og støtte

system arkitektur

Programvarearkitektur er en måte vi definerer hvordan komponentene i et design er avbildet design og distribusjon av programvare .

Det er i utgangspunktet skjelettdesignet til et programvaresystem som viser komponenter, abstraksjonsnivåer og andre aspekter ved et programvaresystem. For å forstå det på et lekmannsspråk, er det målet eller logikken til en virksomhet bør være krystallklar og lagt ut på et enkelt ark. Her er mål for store prosjekter og ytterligere veiledninger for oppskalering der for at eksisterende system og kommende systemer skal oppskaleres.

Systemarkitekturmønstre

Det er ulike måter å organisere komponentene i programvarearkitektur på. Og den forskjellige forhåndsdefinerte organiseringen av komponenter i programvarearkitekturer er kjent som programvarearkitekturmønstre. Mange mønstre ble prøvd og testet. De fleste av dem har løst forskjellige problemer. I hvert mønster er komponentene organisert forskjellig for å løse et spesifikt problem i programvarearkitekturer.

Ulike typer programvarearkitekturmønstre inkluderer:

  1. Lagdelt mønster
  2. Klient-server mønster
  3. Hendelsesdrevet mønster
  4. Mikrokjernemønster
  5. Microservices-mønster
Systemarkitekturmønstre

Systemarkitekturmønstre

Modularitet og grensesnitt i systemdesign

  • Modulær design refererer til en metode/prosedyre for produktdesign som involverer å integrere eller kombinere mindre, uavhengige elementer for å lage et ferdig produkt. Et stort produkt (som en bil) kan deles i mindre, enklere komponenter som utvikles og produseres separat ved hjelp av den modulære designtilnærmingen. Det ultimate produktet skapes ved å integrere (eller sette sammen) hver av disse komponentene.
  • Grensesnitt i systemdesign er området der brukere samhandler. Den består av skjermvisninger som forenkler systemnavigering, skjermer og skjemaer som samler data, og systemets rapporter.

Evolusjon/oppgradering/skalering av et eksisterende system

Med økningen i teknologibruk, enten det er offline eller online, er det nå et must for hver utviklere å designe og lage en skalerbart system . Hvis systemet ikke er skalerbart, med økningen i brukere, er det svært sannsynlig at systemet vil krasje. Derfor kommer begrepet skalering inn.

xd betydning

Anta at det er et system med konfigurasjoner av spesifikke disker og RAM som håndterer oppgaver. Hvis vi nå trenger å utvikle systemet vårt eller skalere opp, har vi to alternativer med oss.

  1. Oppgraderingsspesifikasjoner for eksisterende system: Vi forbedrer ganske enkelt prosessoren ved å oppgradere RAM og diskstørrelse og mange andre komponenter. Merk at her bryr vi oss ikke om skalerbarheten og tilgjengeligheten til nettverksbåndbredde. Her i henhold til utviklingen jobber vi med tilgjengelighetsfaktoren bare med tanke på at skalerbarheten vil opprettholdes. Dette er kjent som vertikal skalering.
  2. Opprett et distribuert system ved å koble flere systemer sammen: Vi ser ovenfor at hvis skalerbarheten ikke er opp til merket, trenger vi flere systemer for dette tiltaket, da tilgjengelighetstiltak har en begrensning. For å skalere opp trenger vi flere systemer (flere blokker) og dette er kjent som horisontal skalering.
Evolusjon/oppgradering/skalering av et eksisterende system

Evolusjon/oppgradering/skalering av et eksisterende system

Data flyter mellom systemer gjennom Dataflytdiagrammer eller DFD-er .

Dataflytdiagrammer eller DFD-er er definert som en grafisk representasjon av strømmen av data gjennom informasjon. DFD er designet for å vise hvordan et system er delt inn i mindre deler og for å fremheve dataflyten mellom disse delene.

enkel datoformater i java

Her er et eksempel for å demonstrere dataflytdiagrammets grunnleggende struktur:

Dataflytdiagram

Dataflytdiagrammets grunnleggende struktur

Komponenter i en DFD:

Representasjon Handling utført
Torget Definerer kilden til destinasjonen for data
Pil Identifiserer dataflyt og fungerer som en rørledning som informasjon flyter gjennom
Sirkel/boble Representerer en prosess som forvandler innkommende dataflyt til utgående data
Åpne rektangel Det er et datalager eller data i hvile/midlertidig lagring av data

Merk: Avsender og mottaker skal alltid skrives med store bokstaver. Det er heller god praksis å bruke store bokstaver som er plassert i firkantet boks i henhold til DFD-konvensjonene.

Eksempel på systemdesign: Airline Reservation System

Nå siden vi har diskutert det grunnleggende om systemdesign så langt, la oss nå forstå systemdesign gjennom et grunnleggende eksempel - Airline Reservation System.

For å forstå komponentene og utformingen av flyreservasjonssystemet bedre, la oss først se gjennom flytdiagrammet på kontekstnivå:

Eksempel på systemdesign: Airline Reservation System

Eksempel på systemdesign: Airline Reservation System

filmnettsteder som ligner på 123movies

La oss nå forstå DFD for flyreservasjonssystemet:

  • I flytdiagrammet ovenfor, Passasjer , Reisebyrå , Flyselskap er kildene som data migreres over.
  • Her overføres data fra Passasjer for å bestille en flybillett som vist med DFD-pilskiltet der reiseforespørselen er plassert.
  • Nå overføres disse dataene over to kilder, som vist ovenfor, nemlig ' Reisebyrå 'og' Flyselskap ’ hvor hvis setet er ledig Preferanser og Air Flight forespørselen sendes til kilden.
  • Reisebyrå og tilsvarende Billetter plasseres som forespurt.
  • Hvis ingen billett er tilgjengelig, sendes en forespørsel om passasjerreservasjon til kilden – flyselskapet.

Fordeler med systemdesign

Etter en detaljert diskusjon av introduksjonen til systemdesign, er det et must nå å diskutere dens fordeler og ulemper.

Den største fordelen med systemdesign er å innprente bevissthet og kreativitet i fullstack-utviklere via synergisk binding av API-protokoller, gatewayer, nettverk og databaser.

Noen av de største fordelene med systemdesign inkluderer:

  • Reduserer designkostnadene for et produkt.
  • Rask programvareutviklingsprosess
  • Sparer samlet tid i SDLC
  • Øker effektiviteten og konsistensen til en programmerer.
  • Sparer ressurser

Lær systemdesign: Opplæring i systemdesign