INHOUDSOPGAWE:

AWS en IBM: 'n Vergelyking van IoT -dienste: 4 stappe
AWS en IBM: 'n Vergelyking van IoT -dienste: 4 stappe

Video: AWS en IBM: 'n Vergelyking van IoT -dienste: 4 stappe

Video: AWS en IBM: 'n Vergelyking van IoT -dienste: 4 stappe
Video: Сравнение протоколов TCP и UDP 2024, Julie
Anonim
AWS en IBM: 'n IoT Services -vergelyking
AWS en IBM: 'n IoT Services -vergelyking

Vandag vergelyk ons twee stapels wat dit moontlik maak om IoT -toepassings te ontwikkel onder die oogpunt van verskillende diensaanbiedings.

Stap 1: Funksies as 'n diens

Funksies as 'n diens
Funksies as 'n diens

FaaS is 'n kategorie van wolkdienste wat gebruik word om 'n 'bedienerlose' argitektuur te bou. FaaS stel kliënte in staat om toepassingsfunksies te ontwikkel, bestuur en bestuur sonder om die infrastruktuur te bou en te onderhou.

Amazon bied AWS Lambda aan, IBM bied IBM Cloud Functions aan. Hierdie dienste is baie soortgelyk, maar Lambda was die eerste in hierdie soort. Deur FaaS te gebruik, kan u stukke kode in die wolk gebruik en elke diens ondersteun verskillende programmeertale.

IBM Cloud Functions: JavaScript, Swift, Java, Go, Php, Python, Ruby,. NET (C# F# ens.), Enige via Docker AWS Lambda: JavaScript, Java, C#, F#, Go, Python, Ruby, PowerShell, Any via Runtime API

IBM Ondersteun meer tale en met docker is dit maklik om skrifte in ander tale te gebruik. Dit kan ook met Lambda gedoen word, maar dit is nie onmiddellik nie. U kan 'n voorbeeld hier lees:

Beide dienste het gebruiksbeperkings; ons rapporteer dit in 'n tabel en lig die beste uit.

Die prys is gebaseer op GigaBytes per sekonde (RAM) met die byvoeging van die aantal versoeke vir AWS Lambda. Elke diens het 'n gratis plan en dit is amper gelykstaande. Soos u kan sien, is Lambda 'n bietjie goedkoper vir die GB/s, maar dit het 'n koste verbonde aan versoeke wat Cloud Functions nie het nie, en die koste is byna dieselfde. Natuurlik, as u take moet uitvoer wat geheue eet en min versoeke gebruik, moet u Lambda gebruik. Die grootste voordeel van IBM Cloud Function, na ons mening, is dat die stapel daarvan open source is. Dit is volledig gebaseer op Apache OpenWhisk en kan ook op 'n privaat infrastruktuur ontplooi word.

Stap 2: Masjienleer

Masjienleer
Masjienleer

'N Gebied waar die IBM- en AWS -stapels soortgelyke dienste bied, is masjienleer: Amazon met sy SageMaker en IBM met Watson Machine Learning. Die twee dienste is baie op baie aspekte: beide stel hulself voor as hulpmiddels om datawetenskaplikes en ontwikkelaars te help om hul masjienleermodelle te bou, op te lei en dan in produksieklaar omgewings te implementeer, maar die filosofieë wat die twee ondernemings aanneem, verskil baie. Beide dienste laat u kies tussen verskillende grade van beheer oor die modelle wat u gebruik. In Watson ML het u 'n paar ingeboude modelle wat reeds opgelei is om baie spesifieke take uit te voer: as u byvoorbeeld wil herken watter voorwerpe in 'n prent voorkom, voer u net die VisualRecognitionV3-model in en gee dit die prentjie wil ontleed. U kan ook 'n 'aangepaste model' bou, maar in Watson ML beteken dit meestal dat u 'n reeds geboude model moet neem en ons daaroor kan oefen, sodat die aanpassing redelik beperk is. Dit is egter belangrik om op te let dat nie SageMaker of Watson ML die enigste manier is om masjienleer op die stapels van hul ontwikkelaars te doen nie; dit is net dienste wat daarop gemik is om die lewens van die ontwikkelaars makliker te maak. Die Watson ML -platform ondersteun ook baie van die gewildste biblioteke vir masjienleer, sodat u selfs 'n model van nuuts af kan bou met PyTorch, Tensorflow of soortgelyke biblioteke. U gebruik die biblioteke óf direk, óf gebruik die voorafgemaakte modelle; daar is geen middel nie. Watson ML ondersteun ook nie Amazon se keuse biblioteek, Apache MXNet, wat in plaas daarvan eersteklas ondersteuning in SageMaker het.

Die benadering van Amazon SageMaker, selfs as u ingeboude opsies gebruik, is 'n bietjie laer vlak: eerder as om u uit voorafgemaakte modelle te laat kies, kan u kies uit 'n magdom reeds geïmplementeerde opleidingsalgoritmes, wat u kan gebruik wanneer u u model op 'n meer tradisionele manier. As dit nie genoeg is nie, kan u ook u eie algoritme gebruik. Hierdie manier van doen verg beslis meer kennis oor hoe masjienleer gedoen word in vergelyking met net die gebruik van 'n opgeleide model in Watson ML.

Op die eerste oogopslag kan dit lyk asof Watson ML die 'maklike en vinnige' manier is, en Amazon SageMaker is die meer komplekse om op te stel. Dit is uit sommige oogpunte moontlik nie heeltemal waar nie, aangesien SageMaker so is opgestel dat alles op 'n Jupyter Notebook kan werk, terwyl u vir dieselfde funksies in Watson ML baie verskillende subdienste van die web-UI moet instel. Die voorafverwerking van die data het ook toegewyde ruimtes op die IBM -diens, terwyl SageMaker daarop staatmaak dat u dit alles uit die kode in u notaboek doen. Dit plus die feit dat Jupyter -notaboeke uit die oogpunt van sagteware -ingenieurswese nie juis die beste keuse is nie, kan voorkom dat SageMaker baie goed in produksie skaal. Beide dienste het redelik goeie en eenvoudige meganismes om u model te implementeer en API's daarvoor beskikbaar te stel in die buitewêreld.

Ten slotte, Watson ML presteer beter in groot projekte waar die Jupyter -notaboeke hul perke begin wys, en waar u nie veel aanpassing nodig het in wat die model self doen nie. SageMaker is baie beter as u meer buigsaamheid benodig om die algoritmes te definieer, maar as u dit gebruik, moet u rekening hou met die feit dat u moet vertrou op Jupyter Notebooks, wat moontlik nie goed skaal in die produksie nie. 'N Oplossing kan wees om die res van die kode soveel as moontlik van die model te ontkoppel, sodat die kode in die werklike notaboeke nie te groot word nie en ons ons sagteware beter kan organiseer in die ander modules wat net ons model se API gebruik.

Stap 3: Datastroom en -analise

Datastroom en -analise
Datastroom en -analise

Datastroomdienste is van kardinale belang in die hantering en ontleding van groot datastrome in reële tyd. Hierdie vloei kan van die wolk na die gebruikers se toestel wees, soos 'n videostroom, of van die gebruikers na die wolk, soos IoT -telemetrie en sensorlesings. Veral in die tweede geval kan ons 'n situasie hê waarin enkele bronne klein hoeveelhede data oplaai, maar as ons die algehele deurset van alle toestelle in ag neem, benodig dit aansienlike bandwydte, en daarom is dit sinvol om 'n gespesialiseerde diens te gebruik om sulke vloei van data. Sonder om hierdie deurlopende vloei direk te hanteer, sou ons die inkomende inligting in 'n tydelike berging moes buffer en dit in 'n tweede keer met 'n rekenaarrekenaar moes verwerk. Die probleem van hierdie laaste benadering is dat ons meer verskillende dienste moet koördineer om te bereik wat 'n enkele datastroomdiens alleen al doen, wat die kompleksiteit van die instandhouding en opset van die toepassing vergroot. Boonop kan die buffering ons aansoek in beginsel nie meer in reële tyd maak nie, want vir 'n item wat verwerk moet word, is dit ook nodig dat al die ander items voordat dit verwerk word, en die toevoeging van prioriteitsbeleid tot die buffer, weer, verhoog die kompleksiteit drasties. Samevattend bied datastroomdienste intydse hantering van datavloei, met 'n maklike opset, en kan dit ontledings verskaf oor die inkomende data. Hier vergelyk ons die twee belangrikste streaming dienste van die IBM- en AWS -stapel, naamlik IBM Streams en AWS Kinesis.

Ons begin om op te let dat beide die basiese funksies wat ons van 'n stroomdiens verlang, deur IBM en AWS aangebied word. Hierdie funksies sluit in feitlik oneindige verwerkingsnelheid, lae latency en intydse data -analise. Aangesien ons van professionele dienste praat, bied hulle albei produksiegereedskap vir implementering en outomatisering.

Beide dienste bied dit as 'n opsionele opsie oor data -analise, sodat u slegs kan betaal of u dit nodig het of nie. In die geval van Kinesis, as u nie analise nodig het nie, maar slegs die hantering van datavloei, word die pryse gehef per verwerkte GB in plaas van verwerkingstyd, soos in die IBM -saak. Die prys per GB is oor die algemeen goedkoper as die prys per keer, aangesien u slegs vir die inkomende verkeer betaal. Vir die res van hierdie pos sal ons beide IBM Streams en AWS Kinesis oorweeg met die data -analise -funksie geaktiveer.

Strome en Kinesis bied integrasie met verskillende dienste om die inkomende data vooraf te verwerk en te filtreer voordat dit na data-analise oorgedra word, onderskeidelik met Apache Edgent en AWS Lambda. Alhoewel hierdie dienste radikaal van mekaar verskil, sal ons dit slegs bespreek vanuit die oogpunt van die twee stromingsdienste. Die fundamentele verskil tussen die twee is dat Apache Edgent op die toestel uitvoer, terwyl AWS Lambda op die wolk uitvoer. Dit bring baie voor- en nadele mee: van Lambda-kant af het ons 'n buigsame en maklik om te gebruik diens met 'n naatlose integrasie met Kinesis, maar dit vereis dat die data reeds na die wolk gelaai word, wat dus doeltreffend is en Kinesis ook betaal word vir die data wat uiteindelik weggegooi sal word. Van Edgent se kant af het ons die meeste berekeninge gedoen, wel aan die rand van die netwerk (dus op die toestelle) voordat ons nuttelose data op die wolk oplaai. Die grootste nadeel is dat Edgent 'n groot raamwerk is, wat tyd kan neem om op te stel en ingewikkeld kan wees om te onderhou. 'N Ander verskil wat relevant kan wees by die keuse van 'n platform, is dat Edgent ten volle open source is, en Lambda nie. Dit kan beide as 'n pro beskou word, aangesien toegang tot die kode wat u of u kliënt sal uitvoer altyd positief is, beide as 'n nadeel, want daar kan situasies wees waarin u dringende ondersteuning nodig het waarin u nie kan voorsien nie alle open source omgewings.

Ander kenmerke wat ons kan noem, is die outomatiese skaal van Kinesis van die toegewysde hulpbronne. Die hardeware wat dit bied, bestaan inderdaad uit 'n aantal sogenaamde Kinesis Processing Units (KPU's) wat parallel loop, waar een KPU 1 vCore en 4GB RAM bied. Hulle aantal hang af van die behoeftes van die toepassing en word dinamies en outomaties toegewys (wat u betaal is inderdaad die cpu -tyd maal die aantal KPU's), onthou net dat dit 'n Kinesis -beleid is om u nog een KPU te hef as u 'n Java gebruik aansoek. IBM Streams bied in plaas daarvan nie hierdie soort buigsaamheid nie, en bied u 'n houer met vaste hardeware, meer besonderhede as ons praat oor pryse. Aan die ander kant is IBM Streams meer oop as Kinesis, aangesien dit met die WAN in verbinding tree via algemene gebruikte protokolle, soos HTTP, MQTT ensovoorts, terwyl Kinesis gesluit is vir die AWS -ekosisteem.

As finale vergelyking, laat ons praat oor pryse, en laat ek sê dat IBM op hierdie punt nie goed werk nie. Ons het verskillende oplossings vir drie verskillende kategorieë (basies, high-end, ultra-high-end) vir IBM en AWS opgestel, en ons gaan die prys daarvan vergelyk. In die basiese opset het ons een AWS KPU, wat vroeër genoem is, teen 'n IBM -oplossing met dieselfde hardeware. Vir die high-end het ons 8 KPU's wat parallel is vir Kinesis en 2 houers altyd parallel vir IBM, elk met 4 vCores en 12 GB RAM. Altyd bied IBM in die ultra-hoë-end 'n enkele houer met 16 vCores en 128 GB RAM aan, terwyl ons 'n ekwivalente oplossing vir AWS weggelaat het, aangesien as 'n toepassing hierdie groot hoeveelheid RAM benodig, dit nie op verskillende KPU's kan werk nie. Die pryse wat ons rapporteer, word uitgedruk in $/maand met inagneming van 'n 24/7 gebruik. Vir die basiese opset wat ons het vir onderskeidelik IBM en AWS 164 $ en 490 $, vir die hoë 1320 $ en 3500 $, word die ultra-hoë-end AWS nie oorweeg nie en is daar slegs IBM met 6300 $. Uit hierdie resultate kan ons sien dat Kinesis beter werk vir die alledaagse gebruiker tot op ondernemingsvlak, terwyl dit nie opsies het om data -analise direk te hanteer wat 'n enorme hoeveelheid rekenaarkrag verg nie. Kinesis lewer 'n beter prestasie/$ verhouding as IBM Streams, ook gehelp deur die dinamiese toewysing van klein hulpbronblokke slegs as dit nodig is, terwyl IBM u 'n vaste houer bied. Op hierdie manier, as u werklading deur pieke gekenmerk word, word u met IBM gedwing om u toepassingsbehoeftes te oorskat en 'n oplossing in die ergste geval op te stel. IBM bied uurgeld aan in plaas van om die volle maand te betaal, maar dit word nie outomaties as Kinesis geautomatiseer nie.

Stap 4: IoT -argitektuur

IoT -argitektuur
IoT -argitektuur

Die konfigurasie vir toestelle vir aws iot is redelik maklik in vergelyking met ibm watson iot. Omdat in ibm watson iot die verifikasie per toestel met teken is, en sodra dit die teken vertoon, sal dit nooit weer verskyn nie. Om weer deel te neem aan ibm watson iot is redelik duur in vergelyking met aws iot. Die prys in ibm watson iot -koste is dus gebaseer op per toestel, data -berging, dataverkeer. Maar in werklikheid kan ons die bedrag een keer betaal, en ons kan meer toestelle en data byvoeg wat vanaf toestelle gepubliseer word en op toestelle afgelewer word.

Begin met u toestel- of dit nou 'n sensor, gateway of iets anders is- en laat ons u help om met wolk te skakel.

U toesteldata is altyd veilig as u met die wolk verbind met behulp van 'n oop, ligte MGTT -boodskapprotokol of HTTP. Met behulp van protokolle en node-rooi kan ons ons toestel met 'n iot-platform verbind en toegang tot lewendige en historiese data verkry.

Gebruik ons veilige API's om u programme met data van u toestelle te verbind.

Skep toepassings binne ons gegewe wolkdiens om data te interpreteer.

Aanbeveel: