Ano ang stack ng engineering? + Halimbawa

Ano ang stack ng engineering? + Halimbawa
Anonim

Ang maikling sagot ay ang paggamit namin ng Flask para sa Python sa backend, Backbone para sa Javascript sa front-end, at iimbak ang aming data sa MongoDB, Redis, at ElasticSearch. Naka-host kami sa AWS.

Ano ang isang stack?

Maraming mga piraso ng teknolohiya ang kinakailangan upang maghatid ng isang website sa iyo, at nagsasagawa sila ng iba't ibang mga function, kabilang ang:

  • Paglikha ng mga pahina sa isang browser o app, i-estilo ang mga ito (kulay, mga font), at gawing interactive ang mga ito (hal. Pagbukas ng pulang puso at pagpapakita ng isang kahon ng komento kapag nag-click ka dito). Ito ay tinatawag na front end, o client-side
  • Pagtitipon ng impormasyong kinakailangan para sa isang pahina (hal. Ang tanong, ang sagot, ang mga pangalan ng gumagamit at mga larawan, ang bilang ng mga puso), at ipadala ito sa iyong computer o telepono. Ito ay tinatawag na backend, o server-side
  • Ang pag-iimbak ng impormasyong ito upang magagamit ang anumang oras na kinakailangan ito, at nagbibigay-daan sa amin upang maghanap ng eksaktong impormasyon na kailangan namin. Ito ay tinatawag na database, o datastore
  • Ang mga computer na nakakonekta sa Internet at palaging sa gayon sinuman ay maaaring ma-access ang website sa anumang oras. Ang mga computer ay tinatawag na mga server at ang mga ito naka-host sa isang lugar.
  • Maraming iba pang mga kritikal at menor de edad na mga function

Sa bawat isa sa mga layer na ito, maraming mga mahusay na pagpipilian ang magagamit at ang mga pagpipilian sa anumang koponan ay gumagawa ay batay sa karanasan at kaginhawahan ng mga miyembro ng koponan, pati na rin ang mga praktikal na bagay tulad ng gastos at tiyak na mga kinakailangan sa pagganap.

Ang aming (halos) buong stack

Ang ilang mga teknolohiya ay naka-install, na-update, at pinamamahalaan ng mga miyembro ng aming koponan sa aming sariling mga server at mga laptop. Kabilang dito ang:

  • Backbone upang ayusin ang aming Javascript
  • Compass upang muling gamitin at ayusin ang aming CSS
  • Flask, isang balangkas ng Python upang maghatid ng HTML API ng JSON + at upang mag-render ng mga buong HTML na pahina
  • pyres para sa aming mga queue sa gawain (malamang na kintsay sa lalong madaling panahon)
  • MongoDB upang iimbak ang aming data (posibleng Postgres sa lalong madaling panahon)
  • Ang mga Redis sa mga bagay na cache ay tulad ng mga feed sa paligid ng site, mga tanong na nagte-trend, at lahat ng uri ng mga istatistika ng paggamit
  • ElasticSearch sa paghahanap ng kapangyarihan
  • Nginx upang maghatid ng site
  • Gumuhit upang mabawasan, i-compress, at baguhin ang aming Javascript at CSS
  • Ang Capistrano upang i-deploy ang aming app at magsagawa ng ilang iba pang mga kapaki-pakinabang na gawain
  • Manika upang i-set up ang software na kailangan namin sa mga bagong server

Ang ilang mga teknolohiya ay mga serbisyong itinayo at pinamamahalaan ng ibang mga kumpanya. Madalas na mas mahusay na hayaan ang ibang tao na tumuon sa mga partikular na problema sa halip na gawin ang lahat ng ating sarili. Ang ilang mga serbisyo na ginagamit namin ay:

  • AWS aka Amazon Web Services para i-host ang aming mga server, mga static asset, at bilang isang CDN
  • Cloudflare para sa DNS, caching, at ilang antas ng seguridad
  • Google Analytics at Mixpanel para sa analytics
  • Papertrail para sa sentralisadong pag-log
  • Sentry para sa pagsubaybay ng mga error sa client-side
  • DataDog para sa pagsubaybay sa aming mga server at serbisyo
  • Bagong Relik para sa pagsubaybay sa pagganap ng Flask app
  • Customer.io upang magpadala ng mga email batay sa kung ano ang ginagawa mo o hindi gawin sa app
  • Github sa code para sa pakikipagtulungan at pagho-host

At marahil marami pang iba.

Ito ay tumatagal ng maraming piraso upang bumuo at magpatakbo ng isang website, ngunit sa tulong ng mahusay na binuo tool, ito ay hindi kaya mahirap!