logo

Vad är systemdesign – Lär dig systemdesign

Systemdesign är processen att definiera arkitekturen, komponenterna, modulerna, gränssnitten och data för ett system för att uppfylla specificerade krav. Det innebär att översätta användarkrav till en detaljerad plan som vägleder implementeringsfasen. Målet är att skapa en välorganiserad och effektiv struktur som uppfyller det avsedda syftet med hänsyn till faktorer som skalbarhet, underhållbarhet och prestanda.



Att behärska systemdesign är avgörande för alla som vill bygga robusta och skalbara system. Vårt omfattande Kurs i systemdesign ger dig kunskaper och färdigheter för att utmärka dig inom detta område. Genom praktiska exempel och expertinsikter lär du dig hur du effektivt översätter användarkrav till detaljerade konstruktioner som framgångsrikt kan implementeras.

Viktiga ämnen för systemdesign

Varför lära sig systemdesign?

I alla utvecklingsprocesser, oavsett om det är programvara eller någon annan teknik, är det viktigaste steget Design . Utan designfasen kan du inte hoppa till implementeringen eller testdelen. Detsamma är fallet med Systemet.



Systemdesign är inte bara ett viktigt steg i utvecklingen av systemet utan ger också ryggraden för att hantera exceptionella scenarier eftersom det representerar mjukvarans affärslogik.

Vikten av systemdesignfasen i SDLC

Vikten av systemdesignfasen i SDLC

prova catch block i java

Från ovanstående SDLC-steg är det tydligt att systemdesign fungerar som en ryggrad eftersom hur bra kodningsdelen än exekveras, blir det senare irrelevant om motsvarande design inte är bra. Så här får vi viktig viktig information om varför det efterfrågas i varje produktbaserat företag.



Mål för systemdesign

  1. Praktiskhet : Vi behöver ett system som bör rikta sig mot den uppsättning målgrupper(användare) som de designar.
  2. Noggrannhet : Ovanstående systemdesign bör utformas på ett sådant sätt att den uppfyller nästan alla krav kring vilka den är utformad, vare sig den är funktionell eller icke-funktionell.
  3. Fullständighet : Systemdesign bör uppfylla alla användarkrav
  4. Effektiv : Systemdesignen bör vara sådan att den inte bör överanvända överstigande resurskostnaden och inte heller underanvändas eftersom det vid det här laget kommer att resultera i låg grundlig put (output) och mindre svarstid (latency).
  5. Pålitlighet : Systemet som är designat bör vara i närheten av en felfri miljö under en viss tid.
  6. Optimering : Tid och rum är sannolikt vad vi gör för att kodbitar för enskilda komponenter ska fungera i ett system.
  7. Skalbar (flexibilitet) : Systemdesign bör vara anpassningsbar med tiden enligt olika användarbehov hos kunder som vi vet kommer att fortsätta förändras i tid. Det bästa exemplet här ute är det välkända företaget: Nokia. Det är den viktigaste aspekten när man designar system och är resultatet av varför 1 av 100 startups lyckas på lång sikt, det bästa exemplet här ute är techcodeview.com.
Mål för systemdesign

Mål för systemdesign

localdatetime java

Obs: Systemdesign hjälper oss också att uppnå feltolerans, vilket är förmågan hos en programvara att fortsätta arbeta där även dess 1 eller 2 komponent misslyckas.

Nu efter att ha tittat och gått igenom ovanstående mål, låt oss nu diskutera fördelarna med systemdesign för att förstå det bättre eftersom fördelarna nedan får vår förståelse ännu närmare det verkliga livet.

Komponenter i systemdesign

Nedan är några av huvudkomponenterna i systemdesignen. diskuteras i korthet. Den detaljerade versionen av detta kommer att diskuteras i olika inlägg:

  1. Lastbalanserare: Mest avgörande komponenten för skalbarhet, tillgänglighet och prestandamått för system.
  2. Nyckelvärdebutiker: Det är ett lagringssystem som liknar hashtabeller där nyckel-värde butiker är distribuerade hashtabeller.
  3. Blob-lagring: Blob står för binära stora objekt, som namnet antyder är lagring för ostrukturerad data som YouTube och Netflix.
  4. Databaser: Det är en organiserad samling av data så att de lätt kan nås och ändras.
  5. Prisbegränsningar: Dessa anger det maximala antalet förfrågningar som en tjänst kan uppfylla.
  6. Övervakningssystem: Dessa är i grunden programvara där systemadministratören övervakar infrastrukturer som bandbredd, CPU, routrar, switchar, etc.
  7. Distribuerad systemmeddelandekö: Transaktionsmedium mellan producenter och konsumenter.
  8. Distribuerad unik ID-generator: I fallet med stora distribuerade system sker varje ögonblick flera uppgifter så för att särskilja det tilldela en tagg som motsvarar varje händelse.
  9. Distribuerad sökning: På varje webbplats läggs viktig information som besökarna söker i sökfältet.
  10. Distribuerade loggningstjänster: Spåra händelseförlopp från ände till slut.
  11. Distributed Task Scheduler: Beräkningsresurser som CPU, minne, lagring etc.
Komponenter i systemdesign

Komponenter i systemdesign

Systemdesign livscykel (SDLC)

System Design Life Cycle (SDLC) är en omfattande process som beskriver de steg som är involverade i att designa och utveckla ett system, oavsett om det är en mjukvaruapplikation, hårdvarulösning eller ett integrerat system som kombinerar båda. Det omfattar en serie faser som vägleder ingenjörer genom att skapa ett system som är i linje med användarens behov och organisatoriska mål. SDLC syftar till att säkerställa att slutprodukten är pålitlig, skalbar och underhållbar.

Faserna (stadierna) i systemdesignlivscykeln är:

  1. Planera
  2. Förstudie
  3. Systemdesign
  4. Genomförande
  5. Testning
  6. Spridning
  7. Underhåll och support

system arkitektur

Mjukvaruarkitektur är ett sätt som vi definierar hur komponenterna i en design avbildas design och distribution av programvara .

Det är i grunden skelettdesignen av ett mjukvarusystem som visar komponenter, abstraktionsnivåer och andra aspekter av ett mjukvarusystem. För att förstå det på en lekmans språk är det syftet eller logiken för ett företag att vara kristallklart och läggas ut på ett enda pappersark. Här finns mål för stora projekt och ytterligare guider till uppskalning för att det befintliga systemet och kommande system ska skalas upp.

Systemarkitekturmönster

Det finns olika sätt att organisera komponenterna i mjukvaruarkitektur. Och den olika fördefinierade organisationen av komponenter i mjukvaruarkitekturer är kända som mjukvaruarkitekturmönster. Många mönster prövades och testades. De flesta av dem har framgångsrikt löst olika problem. I varje mönster är komponenterna organiserade på olika sätt för att lösa ett specifikt problem i mjukvaruarkitekturer.

Olika typer av mjukvaruarkitekturmönster inkluderar:

  1. Lagermönster
  2. Klient-servermönster
  3. Händelsedrivet mönster
  4. Mikrokärnmönster
  5. Microservices-mönster
Systemarkitekturmönster

Systemarkitekturmönster

Modularitet och gränssnitt i systemdesign

  • Modulär design avser en metod/procedur för produktdesign som innebär att integrera eller kombinera mindre, oberoende element för att skapa en färdig produkt. En stor produkt (som en bil) kan separeras i mindre, enklare komponenter som utvecklas och produceras separat med den modulära designmetoden. Den ultimata produkten skapas genom att integrera (eller montera) var och en av dessa komponentdelar.
  • Gränssnitt i systemdesign är området där användare interagerar. Den består av skärmvisningar som underlättar systemnavigering, skärmar och formulär som samlar in data och systemets rapporter.

Evolution/Uppgradering/Skala av ett befintligt system

Med den ökade teknikanvändningen, oavsett om det är offline eller online, är det nu ett måste för varje utvecklare att designa och skapa en skalbart system . Om systemet inte är skalbart, med ökningen av antalet användare, är det mycket troligt att systemet kraschar. Därför kommer begreppet skalning in i bilden.

xd betydelse

Anta att det finns ett system med konfigurationer av specifik disk och RAM som hanterade uppgifter. Om vi ​​nu behöver utveckla vårt system eller skala upp, har vi två alternativ med oss.

  1. Uppgraderingsspecifikationer för befintligt system: Vi förbättrar helt enkelt processorn genom att uppgradera RAM och diskstorlek och många andra komponenter. Observera att vi här inte bryr oss om skalbarheten och tillgängligheten för nätverksbandbredd. Här enligt utvecklingen arbetar vi över tillgänglighetsfaktorn endast med tanke på att skalbarheten kommer att bibehållas. Detta är känt som vertikal skalning.
  2. Skapa ett distribuerat system genom att koppla ihop flera system: Vi ser ovan att om skalbarheten inte håller måttet så behöver vi flera system för denna åtgärd eftersom tillgänglighetsmått har en begränsning. För att skala upp behöver vi fler system (fler bitar av block) och detta kallas horisontell skalning.
Utveckling/uppgradering/skala av ett befintligt system

Evolution/Uppgradering/Skala av ett befintligt system

Dataflöden mellan system genom Dataflödesdiagram eller DFD:er .

Dataflödesdiagram eller DFD:er definieras som en grafisk representation av dataflödet genom information. DFD är utformad för att visa hur ett system är uppdelat i mindre delar och för att lyfta fram dataflödet mellan dessa delar.

Här är ett exempel för att demonstrera dataflödesdiagrammets grundläggande struktur:

Dataflödesdiagram

Dataflödesdiagrammets grundläggande struktur

Komponenter i en DFD:

romerska siffror 1 till 100
Representation Åtgärd utförd
Fyrkant Definierar destinationskällan för data
Pil Identifierar dataflödet och fungerar som en pipeline genom vilken information flödar
Cirkel/bubbla Representerar en process som omvandlar inkommande dataflöde till utgående data
Öppna rektangeln Det är ett datalager eller vilodata/tillfälligt datalager

Notera: Avsändare och mottagare ska alltid skrivas med versaler. Det är snarare bra praxis att använda stora bokstäver vad som helst placeras i en fyrkantig ruta enligt DFD:s konventioner.

Exempel på systemdesign: Flygbokningssystem

Nu eftersom vi har diskuterat grunderna i systemdesign hittills, låt oss nu förstå systemdesign genom ett grundläggande exempel - flygbokningssystem.

För att bättre förstå komponenterna och designen av flygbokningssystem, låt oss först granska dess flödesdiagram på kontextnivå:

Exempel på systemdesign: Flygbokningssystem

Exempel på systemdesign: Flygbokningssystem

Låt oss nu förstå DFD för flygbokningssystemet:

generera slumptal i java
  • I flödesdiagrammet ovan, Passagerare , Resebyrå , Flygbolag är de källor över vilka data migreras.
  • Här överförs data från Passagerare för att boka en flygbiljett som visas med DFD-pilskylten där reseförfrågan är placerad.
  • Nu överförs denna data över två källor, som visas ovan, nämligen ' Resebyrå 'och' Flygbolag ’ där om sätet är ledigt Inställningar och Flygresa begäran ställs till källan.
  • Resebyrå och motsvarande Biljetter placeras efter önskemål.
  • Om ingen biljett är tillgänglig skickas en begäran om passagerarbokning till källan – flygbolaget.

Fördelar med systemdesign

Efter en detaljerad diskussion av introduktionen till systemdesign är det ett måste nu att diskutera dess fördelar och nackdelar.

Den största fördelen med systemdesign är att ingjuta medvetenhet och kreativitet hos fullstackutvecklare via synergisk sammankoppling av API-protokolls gateways, nätverk och databaser.

Några av de stora fördelarna med systemdesign inkluderar:

  • Minskar designkostnaden för en produkt.
  • Snabb mjukvaruutvecklingsprocess
  • Sparar total tid i SDLC
  • Ökar effektiviteten och konsekvensen hos en programmerare.
  • Sparar resurser

Lär dig systemdesign: Handledning för systemdesign