Microservices on Ruby et al

api shit?! do expand on that please.

Pai,
REST api, microservices, micro-micro-services, monolithic API :smile:
basic-auth, handshake auth, token, tokens every where :smile:
json, xml, json over json.
Toate pentru ca tre sa fim scalable and shit. Cand noi avem nevoie de un insert in DB.
Acum la munca, avem un REST api in jruby/sinatra, ii spunem monolithic api.
Un import API scris in go
Si vro’ 10 mici microservices in ruby

  • notificari
  • email sending
  • logger
  • checkout
  • special offers
  • catalogs
  • categories
  • images
    webservices care folosesc alte webservicii care la randul lor au in spate un queue :))
    Toate scrise in ruby/java( write once cry always) and go

Recunosc, sunt absolut indragostit de ruby.
De rails, sunt multumit, este de departe cel mai complet framework. DAR NU ESTE USOR :blush:

1 Like

Cool, random question: ce se intampla cand un mservice crapa sau devine unresponsive? si cum reactioneaza celelalte servicii care depind de el.

De altfel: why JRuby? :smile:

jruby because jvm :slight_smile: am facut profilling desigur si jruby este mult mai stabil pentru long process.

cand pica un serviciu, este ‘scos din load balancer si automat provizionat altul’(folosim aws)
daca este load, adaugam mai multe serivicii si LB muta call-urile
exemplu
produsele sunt service de un endpoint /products

in FR cand cauti un produs, vedem pe unde esti(geoip shit) trimitem call la endpont care la randul face un call la ES care intoarce doar produsele din acea zona (geo hash)

FR -> json call -> products endpoint-> grab ip and different params -> call ES cluster -> return json doar pentru acea regiune :smile:

Ca o adaugire:
totul este testat si restestat si TOT avem buguri :smiley:

Partea cu picatul este triviala privita asa insa un serviciu poate “pica” in n moduri - cel mai frumos este cand endpoint-ul este up dar genereaza issues - de exemplu un POST pe /projects fails cu un 500, times out, renders alien JSON etc.

Makes sense desi nu am avut pb. de stabilitate cu CRuby decat daca nu esti atent la memory leaks si faci un pic de tunning la GC, unicorn sau web app server of choice workers.

Intrebam pentru ca JRuby este oribil in development mode si da - poti folosi CRuby insa apoi nu mai ai 1-1 cu ce se intampla in productie.

am incercat cruby pentru teste si jruby production dar nu a functionat

orice nu este 200/201 este logat in kibana si trimis cu honeybadger si apare frumos pe monitoare :smile: nu prea poti sa automatizezi tot
as vrea sa adaug ca imi place foarte mult in cruby ca am debbuger, lucru pe care nu am reusit sa pun in jruby

@dakull: dacă ai sugestii mai bune pentru titlu și categorie, o să te rog să le schimbi tu :wink:

1 Like
1 Like

hmm / what went wrong? gem related sau application specific

gem related issue