logo

Hvad er systemdesign - Lær systemdesign

Systemdesign er processen med at definere arkitektur, komponenter, moduler, grænseflader og data for et system for at opfylde specificerede krav. Det involverer at oversætte brugerkrav til en detaljeret plan, der guider implementeringsfasen. Målet er at skabe en velorganiseret og effektiv struktur, der opfylder det tilsigtede formål, mens faktorer som skalerbarhed, vedligeholdelse og ydeevne tages i betragtning.



At beherske systemdesign er afgørende for alle, der ønsker at bygge robuste og skalerbare systemer. Vores omfattende Systemdesign kursus giver dig viden og færdigheder til at udmærke sig på dette område. Gennem praktiske eksempler og ekspertindsigt lærer du, hvordan du effektivt omsætter brugerkrav til detaljerede designs, der kan implementeres med succes.

Vigtige emner til systemdesign

Hvorfor lære systemdesign?

I enhver udviklingsproces, hvad enten det er software eller enhver anden teknologi, er den vigtigste fase Design . Uden designfasen kan du ikke hoppe til implementeringen eller testdelen. Det samme er tilfældet med systemet.



Systemdesign er ikke kun et vigtigt skridt i udviklingen af ​​systemet, men giver også rygraden til at håndtere exceptionelle scenarier, fordi det repræsenterer softwarens forretningslogik.

Betydningen af ​​systemdesignfasen i SDLC

Betydningen af ​​systemdesignfasen i SDLC

prøv catch block java

Fra ovenstående SDLC-trin er det klart, at systemdesign fungerer som en rygrad, fordi uanset hvor god kodningsdelen er udført, bliver det senere irrelevant, hvis det tilsvarende design ikke er godt. Så her får vi afgørende vital information om, hvorfor det er blevet spurgt i enhver produktbaseret virksomhed.



Mål for systemdesign

  1. Praktisk : Vi har brug for et system, der bør målrette det sæt af målgrupper(brugere), som de designer.
  2. Nøjagtighed : Ovenstående systemdesign bør designes på en sådan måde, at det opfylder næsten alle krav, som det er designet omkring, hvad enten det er funktionelle eller ikke-funktionelle krav.
  3. Fuldstændighed : Systemdesign skal opfylde alle brugerkrav
  4. Effektiv : Systemdesignet skal være sådan, at det ikke bør overforbruge, der overstiger omkostningerne ved ressourcer, eller under brug, da det nu ved, vil resultere i lavt grundigt put (output) og mindre responstid (latency).
  5. Pålidelighed : Systemet, der er designet, skal være i nærheden af ​​et fejlfrit miljø i en vis periode.
  6. Optimering : Tid og rum er sandsynligvis det, vi gør for at kodestykker for individuelle komponenter skal fungere i et system.
  7. Skalerbar (fleksibilitet) : Systemdesign skal kunne tilpasses med tiden i henhold til forskellige brugerbehov hos kunder, som vi ved vil blive ved med at ændre sig til tiden. Det bedste eksempel her ude er det velkendte firma: Nokia. Det er det vigtigste aspekt ved design af systemer og er resultatet af, hvorfor 1 ud af 100 startups lykkes på lang sigt, det bedste eksempel her ude er techcodeview.com.
Mål for systemdesign

Mål for systemdesign

Bemærk: Systemdesign hjælper os også med at opnå fejltolerance, hvilket er en softwares evne til at fortsætte med at arbejde, hvor selv dens 1 eller 2 komponent fejler.

Nu efter at have kigget og gennemgået ovenstående mål, lad os nu diskutere fordelene ved systemdesign for at forstå det bedre, da nedenstående fordele bringer vores forståelse endnu tættere på det virkelige liv.

Komponenter i systemdesign

Nedenfor er nogle af hovedkomponenterne i systemdesignet. diskuteres kort. Den detaljerede version af dette vil blive diskuteret i forskellige indlæg:

  1. Lastbalancere: Mest afgørende komponent for skalerbarhed, tilgængelighed og ydeevnemål for systemer.
  2. Nøgleværdibutikker: Det er et lagersystem, der ligner hashtabeller, hvor nøgleværdibutikker er distribuerede hashtabeller.
  3. Blob-opbevaring: Blob står for binære store objekter, som navnet antyder, er opbevaring til ustrukturerede data såsom YouTube og Netflix.
  4. Databaser: Det er en organiseret indsamling af data, så de let kan tilgås og ændres.
  5. Satsgrænser: Disse angiver det maksimale antal anmodninger, en tjeneste kan opfylde.
  6. Overvågningssystem: Disse er grundlæggende software, hvor systemadministrator overvåger infrastrukturer såsom båndbredde, CPU, routere, switches osv.
  7. Distribueret systemmeddelelseskø: Transaktionsmedium mellem producenter og forbrugere.
  8. Distribueret unikt ID-generator: I tilfælde af store distribuerede systemer sker der hvert øjeblik flere opgaver, så for at skelne det tildeles et tag svarende til hver begivenhed.
  9. Distribueret søgning: Over hvert websted bliver vigtig information, som besøgende vil søge, lagt i søgefeltet.
  10. Distribuerede logningstjenester: Sporing af begivenheder fra ende til anden.
  11. Distribueret opgaveplanlægning: Beregningsressourcer såsom CPU, hukommelse, lagring osv.
Komponenter i systemdesign

Komponenter i systemdesign

syreegenskabsdatabase

Systemdesign livscyklus (SDLC)

System Design Life Cycle (SDLC) er en omfattende proces, der skitserer de trin, der er involveret i design og udvikling af et system, hvad enten det er en softwareapplikation, hardwareløsning eller et integreret system, der kombinerer begge. Det omfatter en række faser, der guider ingeniører gennem skabelsen af ​​et system, der stemmer overens med brugerens behov og organisatoriske mål. SDLC har til formål at sikre, at slutproduktet er pålideligt, skalerbart og vedligeholdeligt.

Faserne (stadierne) af systemdesignets livscyklus er:

  1. Planlægning
  2. Forundersøgelse
  3. Systemdesign
  4. Implementering
  5. Afprøvning
  6. Implementering
  7. Vedligeholdelse og support

Systemarkitektur

Softwarearkitektur er en måde, hvorpå vi definerer hvordan komponenterne i et design er afbildet design og implementering af software .

Det er dybest set skeletdesignet af et softwaresystem, der afbilder komponenter, abstraktionsniveauer og andre aspekter af et softwaresystem. For at forstå det på et lægmandssprog, er det formålet eller logikken i en virksomhed, der skal være krystalklar og lagt ud på et enkelt ark papir. Her er mål for store projekter og yderligere vejledninger til opskalering der, for at det eksisterende system og kommende systemer skal opskaleres.

Systemarkitekturmønstre

Der er forskellige måder at organisere komponenterne i softwarearkitektur på. Og den forskellige foruddefinerede organisering af komponenter i softwarearkitekturer er kendt som softwarearkitekturmønstre. Mange mønstre blev afprøvet. De fleste af dem har med succes løst forskellige problemer. I hvert mønster er komponenterne organiseret forskelligt for at løse et specifikt problem i softwarearkitekturer.

Forskellige typer softwarearkitekturmønstre omfatter:

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

Systemarkitekturmønstre

Modularitet og grænseflader i systemdesign

  • Modulært design refererer til en metode/procedure til produktdesign, der involverer at integrere eller kombinere mindre, selvstændige elementer for at skabe et færdigt produkt. Et stort produkt (som en bil) kan adskilles i mindre, enklere komponenter, der er separat udviklet og produceret ved hjælp af den modulære designtilgang. Det ultimative produkt skabes ved at integrere (eller samle) hver af disse komponentdele.
  • Grænseflader i systemdesign er det område, hvor brugerne interagerer. Den består af skærmvisninger, der letter systemnavigation, skærmbilleder og formularer, der samler data, og systemets rapporter.

Udvikling/opgradering/skalering af et eksisterende system

Med stigningen i teknologibrug, hvad enten det er offline eller online, er det nu et must for enhver udvikler at designe og skabe en skalerbart system . Hvis systemet ikke er skalerbart, med stigningen i brugere, er det meget sandsynligt, at systemet vil gå ned. Derfor kommer begrebet skalering ind i billedet.

xd betydning

Antag, at der er et system med konfigurationer af specifik disk og RAM, som håndterede opgaver. Hvis vi nu skal udvikle vores system eller skalere op, har vi to muligheder med os.

  1. Opgraderingsspecifikationer for eksisterende system: Vi forbedrer simpelthen processoren ved at opgradere RAM og diskstørrelse og mange andre komponenter. Bemærk, at her er vi ligeglade med skalerbarheden og tilgængeligheden af ​​netværksbåndbredde. Her arbejder vi i henhold til udviklingen over tilgængelighedsfaktoren kun i betragtning af, at skalerbarheden vil blive opretholdt. Dette er kendt som lodret skalering.
  2. Opret et distribueret system ved at forbinde flere systemer sammen: Vi ser ovenfor, at hvis skalerbarheden ikke er op til mærket, så har vi brug for flere systemer til denne foranstaltning, da tilgængelighedsforanstaltninger har en begrænsning. For at opskalere har vi brug for flere systemer (flere klumper af blokke), og dette er kendt som horisontal skalering.
Udvikling/opgradering/skalering af et eksisterende system

Udvikling/opgradering/skalering af et eksisterende system

Datastrømme mellem systemer igennem Dataflowdiagrammer eller DFD'er .

Dataflowdiagrammer eller DFD'er er defineret som en grafisk repræsentation af strømmen af ​​data gennem information. DFD er designet til at vise, hvordan et system er opdelt i mindre portioner og til at fremhæve strømmen af ​​data mellem disse dele.

simpel datoformater i java

Her er et eksempel for at demonstrere dataflowdiagrammets grundlæggende struktur:

Dataflowdiagram

Dataflowdiagrammets grundlæggende struktur

Komponenter i en DFD:

Repræsentation Handling udført
Firkant Definerer destinationskilden for data
Pil Identificerer dataflow og fungerer som en pipeline, hvorigennem information strømmer
Cirkel/boble Repræsenterer en proces, der omdanner indgående dataflow til udgående data
Åbn rektangel Det er et datalager eller hvilende data/midlertidig opbevaring af data

Bemærk: Afsender og modtager skal altid skrives med store bogstaver. Det er snarere en god praksis at bruge store bogstaver, hvad der nogensinde er placeret i firkantet boks i henhold til DFD-konventionerne.

Eksempel på systemdesign: Airline Reservation System

Nu da vi har diskuteret det grundlæggende i System Design indtil videre, lad os nu forstå System Design gennem et grundlæggende eksempel - Airline Reservation System.

For bedre at forstå komponenterne og designet af Airline Reservation System, lad os først gennemgå dets kontekstniveau flowdiagram:

Eksempel på systemdesign: Airline Reservation System

Eksempel på systemdesign: Airline Reservation System

filmwebsteder, der ligner 123movies

Lad os nu forstå DFD for flyreservationssystemet:

  • I ovenstående flowdiagram, Passager , Rejsebureau , Flyselskab er de kilder, som data migrerer over.
  • Her overføres data fra Passager skal bestille en flybillet som vist med DFD-piletegnet, hvor rejseanmodningen er placeret.
  • Nu transmitteres disse data på tværs af to kilder, som vist ovenfor, nemlig ' Rejsebureau 'og' Flyselskab ’ hvor hvis sædet er ledigt Præferencer og Luftflyvning anmodning sendes til kilden.
  • Rejsebureau og tilsvarende billetbestilling placeres som ønsket.
  • Hvis ingen billet er tilgængelig, sendes en anmodning om passagerreservation til kilden – flyselskabet.

Fordele ved systemdesign

Efter en detaljeret diskussion af introduktionen til systemdesign, er det et must nu at diskutere dens fordele og ulemper.

Den største fordel ved systemdesign er at indprente bevidsthed og kreativitet hos fuldstackudviklere via synergisk binding af API-protokollers gateways, netværk og databaser.

Nogle af de store fordele ved systemdesign inkluderer:

  • Reducerer designomkostningerne for et produkt.
  • Hurtig softwareudviklingsproces
  • Sparer samlet tid i SDLC
  • Øger effektiviteten og konsistensen af ​​en programmør.
  • Sparer ressourcer

Lær systemdesign: Tutorial til systemdesign