Ett av löftena med att köra applikationer i molnet är friheten att slippa mycket av arbetet med att sköta driften av dem. Men vad händer den dag man vill flytta en applikation från ett moln till ett annat, till exempel på grund av driftstörningar?

– Det finns absolut en risk för inlåsning. Vi håller på att bygga om alla våra applikationer för molnet och det här är något vi jobbar hårt med, säger Ola Hesselroth, chefsarkitekt och utvecklingschef på HL Display, en leverantör av displayenheter till butiker, vilket inkluderar mjukvara.

Flera experter CS varit i kontakt med instämmer.

Vad är det som gör att det finns en risk för inlåsning?

– Bland annat plattformsspecifika programmeringsgränssnitt, till exempel för lagring av data och hantering av köer för uppgifter som ska utföras, säger Martin Forsberg, konsult på Ecru Consulting som bland annat har skapat en regelmotor som körs i molnet.

Ett konkret exempel är att du utnyttjar funktionerna för att lagra data i en databas i Googles molnplattform App Engine och upptäcker att de inte finns tillgängliga på Microsofts Windows Azure, trots att det går att köra Javaprogram på båda. Det gäller att systemarkitekten förstår konsekvenserna av designvalen.

Är det inte bara att lägga funktioner som kan skilja sig åt i ett separat lager, så att det blir enklare att skriva om?

– Så gör vi, men det finns en risk att det blir som att skriva databasneutral sql, säger Martin Forsberg.

Det betyder bland annat att även om problemen minskar med att lägga känslig kod i egna lager, finns risken att koden inte blir optimal. Det innebär att inte alla möjligheter på en plattform utnyttjas.

Problemet är att den bästa funktionaliteten ofta finns i de funktioner som är plattformsspecifika.

Som utvecklare och som applikationsägare vill man naturligtvis utnyttja de bästa funktionerna på en plattform.

Ur den aspekten är det ingen skillnad mellan molnmiljön och traditionella miljöer.

Vad ska man göra åt problemet? Krävs det någon form av reglering?
– Jag är inte förtjust i reglering. Det är bättre att leverantörerna arbetar med standardisering och certifiering tillsammans med användarna. Certifieringen bör bygga på standarder och på kvalitetskrav, säger Anders Kingstedt, vd på Ecru Consulting och ordförande i Sis kommitté för molnstandardisering.

Fakta

Programmeringsspråk. Den som väljer att utveckla med till exempel C# på Microsoft molnplattform Windows Azure kan få problem med att köra applikationen på andra molnplattformar. Det kan göra att en applikation inte fungerar på två olika plattformar.

Klassbibliotek. Även om ett språk finns på två plattformar är det inte säkert att samma uppsättning klassbibliotek finns på båda plattformarna. Det är i praktiken i klassbiblioteken mycket av funktionaliteten för ett språk finns. Följden blir att en applikation inte fungerar på två olika plattformar.

Programmeringsgränssnitt.
Samma problem som för klassbibliotek och det kan vara två olika uttryck för samma grundproblem. Exempel är gränssnitt för lagring av data och för köhantering.

Designprinciper. En design som ökar skalbarhet på en plattform kanske inte alls är så smart på en annan. Det gör att en applikation som är byggd för att fungera på två olika plattformar bara fungerar bra på den ena. Andra exempel på designproblem kan vara att den typ av datalagring som är optimerad på en plattform fungerar dåligt på en annan.

Databaser. Om en molnplattform ger tillgång till en avancerad relationsdatabas kan det vara lockande att lägga logik i procedurer i databasen. Det gör att det finns stor risk för problem på en annan plattform som saknar tillgång till samma databas.

Begreppen klassbibliotek och programmeringsgränssnitt används ofta på ett utbytbart sätt. Enkelt uttryckt är ett klassbibliotek en samling programkod som skrivits med ett objektorienterat språk. Ett programmeringsgränssnitt är de saker som krävs för att anropa viss programkod. Koden i ett klassbibliotek kan ofta anropas med ett programmeringsgränssnitt. Det kan göra att en person pratar om ”klassbiblioteket för filhantering” och en annan om ”programmeringsgränssnittet för filhantering”, när de menar samma sak.

Ola Hesselroth, HL Display:

  • Håll koll på källkoden, så att inte förändringar gör att resultatet av inledande bra intentioner försvinner.
  • Ibland är det smart att förpacka en applikation i en virtuell maskin som kan flyttas mellan olika plattformar.
  • Undvik lagrade procedurer i databaser.
  • Välj metoder och driftmiljöer som fungerar på många molnplattformar.

Johan Nilsson, Voddler:

  • Välj språk som ger program som fungerar bra på olika plattformar, till exempel Python.
  • Undvik om det går programmeringsgränssnitt som är specifika för en plattform.

Martin Forsberg, Ecru Consulting:

  • Lägg kod som kan skilja sig åt mellan molnplattformar i egna lager.

Anders Kingstedt, Ecru Consulting:

  • Försök att hålla dig till de standarder som finns för interoperabilitet.