Folositi servicii externe?

api

(Pîrvan Marian) #1

Observ ca unii programatori folosesc tot felul de api-uri contra cost cum ar fi :

Voi cum procedati, platiti pentru astfel de api-uri, va faceti propriul api sau aveti alta alternativa?
Considerati ca astfel de api uri sunt utile?


(Ionuț Staicu) #2

Ce crezi că e greșit în a folosi așa ceva?


(Pîrvan Marian) #3

Devenim prea dependenti de ceva ce este supracost?Daca se ajunge in punctul in care api ul respectiv nu mai este oferit publicului, ori devine prea scump orice altceva.

Tu ce vezi eficient in aceste api-uri , de ce ar fi o investitie buna?

Bine hai sa pun altfel problema , clienti ,parteneri vostri ce spun despre de api-uri platesc pentru ele sau se feresc de ele?


(Ionuț Staicu) #4

Ai configurat vreodată un server de mail? :smiley: (presupun că nu, din moment ce pui întrebarea asta)

În momentul în care aplicația ta are nevoie de… nu știu, să trimită mail-uri, clientul are de ales între a plăti serviciul vs dezvoltarea unui astfel de serviciu. De cele mai multe ori, un SaaS/PaaS este infinit mai ieftin decât unul inhouse.

Și de ce ar trebui să-ți pese? Doar nu-ți dezvolți aplicația în jurul acelui API… Nu pentru asta s-au inventat adaptoarele?


PS: se pune spațiu DUPĂ semnele de punctuație, nu înainte :wink:


(George Jipa) #5

Atat vreau sa te intreb: cu ce inlocuiesti braintree-ul? te apuci sa faci propriul gateway de plati?


(Andrei Avram) #6

Uneori, un serviciu care costa mult este, de fapt, mult mai ieftin decat o implementare proprie, daca iei in calcul mai multe aspecte care costa:

  • development
  • testing
  • hosting
  • maintenance
  • maintenance
  • maintenance

(Pîrvan Marian) #7

Problema nu este doar la braintree sau mailgun,postmark-uri, observ ca astfel de servicii externe sunt folosite din diferite situate cum algolia for search.

Ok am inteles, unele cazuri ceea mai buna solutie da este folosirea unor astfel de soluti dar astfel de servicii trebuie folosite de fiecare data?

Multumesc frumos pentru raspunsurile voastre, ma ajuta sa imi formez o parere daca este must la fiecare aplicatie sa folosesc un serviciu extern.


(George Jipa) #8

Intrebarea este oarecum ciudata. Folosesti un anumit serviciu… doar daca proiectul la care lucrezi are asemenea necesitati.
Sa luam ca exemplu un serviciu de trimitere emailuri (postmark, sendgrid, amazon ses, etc.). Daca este un site de prezentare, cu un singur form de contact… atunci poti folosi fara probleme smtp-ul pe care ti-l pun la dispozitie cei unde gazduiesti site-ul. Dar daca este un site complex, cu un volum mare de transactional emails, atunci este indicat sa folosesti un serviciu extern. De ce? Se vor ocupa ei de servere, de scalare, de IP whitelisting… iar tu te focusezi pe ceea ce este mai important: aplicatia in sine.


(Horia Coman) #9

E vorba si de velocity oarecum. Daca vrei sa faci ceva rapid, e mult mai usor sa folosesti servicii externe multe. Chiar si daca iti sunt nefamiliare, tot o sa fie mai usor sa inveti API-ul lor si modul de functionare, decat sa scrii ceva de la zero. Multe au si free tiers, asa ca intr-un anumit volum nici n-o sa te coste nimic. O sa ai un produs mult mai finisat si cu multe probleme rezolvate. Pe masura ce produsul evolueaza, poti incepe sa schimbi bucatile care nu mai fac fata, sau sunt prea costisitoare etc. Pana la urma, tu si compania sunteti intr-un anumit domeniu, nu in procesare de plati, transcodare video, trimitere de email-uri, gazduire de imagini, ad serving etc.

Exemplul clasic as zice aici este WhatsApp. Cu 50 de angajati aveau o platforma ce deservea 900m oameni, la momentul achizitiei. Nu poti face treburi de genul asta fara sa ai niste unelte bune care te scapa de multe probleme. Facebook, cu 1.5b de utilizatori are 16k angajati. Google cu O(2b) de utilizatori are 60k angajati.


(Pîrvan Marian) #10

Eu in momentul de fata am in plan sa fac undeva la 3-5 aplicati ce folosesc fiecare cate un api extern doar pentru portofoliu.Sunt doar curios cum ar putea vedea asta un angajator(un programator middle-senior), de bine sau rau.

Ideea e ca in cazul care intervenit ceva nepravazut nu vreau sa ajung in punctul in care din cauza faptului ca trebuie sa renunt la un api extern sunt obligat sa rescriu intreg codul sau o mare parte din el.
Vreau sa fiu in punctul in care o sa trebuiesca sa fac modificari tot mai mici…

Desigur ca sunt constient ca ,asa se invata reparand greselile facute…

@horia141 Multumesc pentru raspunsul tau detaliat.


(Horia Coman) #11

Eu zic ca le-ar vedea cu ochi buni. E o decizie inginereasca pana la urma. Atata timp cat exista justificare, e OK. Chiar daca justificarea este - voiam sa fac 3-5 aplicatii in loc de una, asa ca a trebuit sa folosesc unelte mai high-level.

E oarecum un “engineering culture”-smell, sa se foloseasca intr-o companie numai solutii in house.

Spor la proiecte @LevelCoding


(Ionuț Staicu) #12

Dacă vei ajunge într-un punct în care trebuie să scrii o mare parte din codul tău doar pentru că ai schimbat un provider de X sau Y, cel mai probabil ai greșit pe undeva.


(Birkoff) #13

personal, la clienti am folosit multe api-uri si nu exista solutii decente pentru a inlocui asa ceva (de fapt asta e si ideea unui api, sa oferi o cale de comunicare catre aplicatia ta programelor externe)

am folosit api-uri pentru plati online de la diversi (mobilpay, payu, paypal, etc), pentru generare awb-uri si calculare cost transport (si fiecare curier are alt api si alte costuri), pentru marketing (gen compari.ro, price.ro, profitshare.ro etc), pentru comunicarea cu alte site-uri (gen sa importi produsele altora pe site-ul tau sau sa oferi produsele tale pe alte site-uri gen olx, ocazii, sau imobiliare, etc)

dupa cum vezi, fara api nu s-ar putea lucra eficient (mai ales cand ai un business online si vrei sa profiti de toate avantajele oferite de online)

desigur, sunt tot felul de api-uri in care comunicarea se face prin json, xml, csv sau soap si trebuie sa te adaptezi acelui api folosind documentatia lor (sau in cazul in care e nevoie sa oferi tu un api sa il faci pe baza experientei si a cerintelor clientului)


#14

Mie mi se pare foarte OK sa folosesti anumite API-uri care iti usureaza munca sau care o fac mult mai ok decat ai putea-o face tu intr-un timp util.

In plus, la nivel calitativ un API (platit sau nu) este mult mai ok, mai ales daca este utilizat de multi useri. Pentru ca s-a lovit de X use-scenarios si au deja o mare parte din posibilele probleme deja “rezolvate”.

Tu, daca decizi azi sa faci unul de la 0 nu vei putea acoperi toate cazurile posibile si de fiecare data cand apare o buba va trebui sa o repari.

Nu o lua in nume de rau, e foarte bine daca vrei sa faci propriul API, dar totul este sa ai timpul necesar pentru a-l aloca procesului de specs, dev, testing, etc… Si in cele mai multe cazuri nu prea il ai.

In plus, in programare daca roata exista e ok sa o folosesti, nu te va arata nimeni cu degetul. API-urile sunt create pentru a fi folosite. La fel si orice alt produs SAAS.

Cat despre “ce ar zice un angajator” - iti spun eu : “stie sa foloseasca un API, asadar are o bila alba”. Nimeni nu va zice “uite la asta, in loc sa faca propriul API a folosit ceva deja existent” :wink:


(adrian) #15

ideea e sa nu exagerezi. si sa nu moara aplicatia odata cu vreunul din serviciile pe care le folosesti.
daca e simplu si fezabil, fa in house, daca nu, sau te grabesti, foloseste ceva existent.
daca aplicatia ta e doar o colectie de implementari de API-uri… ceva nu e bine.