En tilstrækkelig avanceret teknologi kan ikke skelnes fra magi

- Arthur C. Clarke

Vi ved det godt... det er lidt kækt at sætte lighedstegn mellem Merrymake og Clarkes mest berømte lov. Men vi har med noget ret avanceret teknologi, der abstraherer mange ting væk fra udviklere at gøre, så en kort forklaring på hvorfor det er tech og ikke magi er på sin plads.

Når kode deployes

  • En udvikler pusher koden til 'main'-branchen i Git.
  • Merrymake injecter en proprietær caching mekanism, og builder, containerizer, og deployer koden til et cluster.
  • Før trafik kan begynde at strømme til den nye service, skal den køre med succes én gang - kaldet en 'smoke test' eller 'init', og sådan en kører platformen automatisk.
  • Merrymake opretter og sletter automatisk message queues i henhold til subsciptions i 'merrymake.json'
Deploying...

Når et event kaldes

  • Et HTTP-request kommer med en API-key, et event, og et payload.
  • Hvis eventet bliver allowed af API-key'en, bliver messagen (event og payload) sendt til den centrale message queue, kaldet rapids.
  • Her bliver messagen routed til flere, mindre message queues kaldet rivers.
  • Hver message på en river spawner en ny instance af en service der skal håndtere messagen, med én dedikeret hardware core. Normalt vllle det være langsomt, men pga. Merrymakes caching mekanisme er det øjeblikkeligt.
  • En service kan poste ny messages til rapids, som derefter kan spawne ny instances af andre services. Den kan også anvende en speciel message til at sende et svar tilbage til HTTP originatoren.

FAQ

Tilbyder Merrymake også datalagring?

>

I øjeblikket tilbyder vi kun compute, men vi har planer om at tilføje Mongo NoSQL- og PostgreSQL-databaser snart. Og senere file storage og caching.

Kan jeg bruge en custom dockerfil/image?

>

Nej. En af fordelene ved Merrymake er, at vi sørger for, at images er opdaterede og ikke har sikkerhedsproblemer. En anden grund er, at vi er nødt til at injecte vores caching mekanisme, hvilket ikke ville være muligt for alle images.

Skal jeg bruge message queues?

>

Message queues tjener to formål. Først og fremmest starter de service instances, hvorfor de er essentielle. Desuden afkobler de caller og callee, hvilket gør det meget nemmere at opdele en service i separate repositories/deployment units, hvis de bliver for store. Fordi det er let at opdele services, kan beslutningen om hvordan koden skal opdeles udsættes til det senest mulige tidspunkt.

Hvorfor får services kun én core?

>

I følge Twelve-Factor Apps guidelines skal der kun være én mekanisme for concurrency i et system. I Merrymake, opnåes concurrency gennem at poste mange messages til rapids. Det simplificerer de enkelte services og gør dem nemmere at vedligeholde. Og kombineret med vores råd om at bruge row-immutable data stores undgås det meste af kompleksiteten ved distribuerede systemer.

Kan jeg tilføje tests til pipelinen?

>

Pipelinen inkluderer en smoke test, der køres i Produktion, hvor det sikres, at filer og tredjepartsforbindelser er tilgængelige, og deployeringen stoppes hvis ikke de er. Da servicen har lov til at eksekvere custom code i denne fase, kan der tilføjes ethvert check, der ønskes.
Når det er sagt, skal den indbyggede pipeline betragtes som en deployment pipeline, ikke en integration pipeline. Denne pipeline er sandsynligvis tilstrækkelig til et ungt projekt, men efterhånden som koden modnes, vil der sandsynligvis tilføjes mere test og statisk analyse. Gennem Git-protokollen integrerer Merrymake godt med alle CI/CD-platforme, herunder GitLab, Azure DevOps, GitHub og BitBucket.

Kan jeg have flere miljøer, f.eks. DEV, TEST, STAGING og PROD?

>

Med hensyn til et DEV-miljø, så har Merrymake en indbygget simulator, der kan spinde enhver del af systemet op, og simulere, hvordan det ville opføre sig i clouden. Denne simulator giver udviklere mulighed for at teste og debugge deres kode lokalt (endda offline), før den skubbes til Produktion.
Med hensyn til TEST og STAGING, så sigter Merrymake efter at fremme den nuværende bedst kendte praksis for softwareudvikling. Merrymake har indbygget simpel feature toggling, så det er nemt at udsætte nogle funktioner for bestemte brugere og ikke andre, hvilket giver os den samme opførsel som flere miljøer ville, uden ulemperne ved at forsøge at holde to eller flere miljøer synkroniseret.

Hvor sikkert er det?

>

Sikkerhed er altafgørende for en platform som vores, og selvom absolut sikkerhed er umulig, gør vi alt for at beskytte vores kunders data og oppetid.

Denial of service

>

Merrymake er designet med skalering i tankerne, så platformen starter ganske enkelt flere instances for at håndtere den øgede trafik, helt op til vores hardwaregrænse. Efterhånden som vores brug vokser, mindskes sårbarheden over for denne type angreb for alle vores kunder. Selvfølgelig kan tredjepartstjenester som databaser kæmpe under det øgede pres. Du kan selv begrænse, hvor mange parallelle instances du vil have i Merrymake.

Adgangskontrol

>

Merrymake CLI'et og Git bruger SSH til al kommunikation, hvilket sikrer, at brugerne er autentiske, og ingen kan lytte til trafikken.
Vores no-code interface er afhængig af et magisk link sendt til en e-mail, og hvis e-mailen er sikker, så er det magiske link og dermed no-code interfacet.
Derudover kan du angive nøjagtigt, hvilke brugere der har adgang til hvilke funktioner i Merrymakes adgangskontrol.

Lækage af oplysninger

>

De mest følsomme oplysninger er hemmelige envvars, såsom database connection strings. I Merrymake er de end-to-end krypteret, hvilket betyder, at de er krypteret på udviklerens enhed og kun dekrypteret inde i containeren, der kører koden. Kun denne container har adgang til både nøglen og den krypterede værdi, så det er kun udviklere i din egen organisation, der muligvis kan få fat i oplysningerne. Platformen forhindrer også visning af disse oplysninger for at undgå utilsigtet lækage, selvom dette kan omgås af bevidst ondsindede udviklere i din organisation.
Det næste niveau af følsomhed er messages under transit, som også er krypteret. Message payloads behandles som byte-streams, og derfor kan disse også krypteres for yderligere sikkerhed, men dette gøres ikke af platformen.
Slutteligt, da hastighed er et af vores primære mål, gemmes de fleste ting på den kritiske vej - mellem request og response - som plaintext. Det inkluderer kildekode (det ændres måske senere), ikke-hemmelige envvars og eventet.

Har du flere spørgsmål? Join os på Discord eller Book et møde med en af udviklerne af Merrymake.