response time on single application only ✓ ▸ Good for WEB development ✓ ▸ Bad for microservices architectures: ✗ ▸ Timeout handling ✗ ▸ Metrics collection ✗ ▸ Bulkheads ✗ ▸ Circuit breakers ✗
PROGRAMMING LANGUAGE DEVELOPED AT GOOGLE IN 2007 BY ROBERT GRIESEMER, ROB PIKE, AND KEN THOMPSON. DESIGNED PRIMARILY FOR SYSTEMS PROGRAMMING, IT IS A COMPILED, STATICALLY TYPED LANGUAGE IN THE TRADITION OF C AND C++, WITH GARBAGE COLLECTION, VARIOUS SAFETY FEATURES AND CSP-STYLE CONCURRENT PROGRAMMING FEATURES ADDED. Wikipedia GO FROM PHP ENGINEER’S PERSPECTIVE
Google in 2007 ▸ Due to the frustration of dealing with the complexity ▸ Announced in November 2009 ▸ Special feature: extreme simplicity ▸ Go: 25 keywords ▸ PHP: 67 keywords
Checkout the latest code on the target server into a new release folder ▸ Copy cached dependencies and install updated ones ▸ Copy environment-specific configuration files ▸ Run all the scripts to warm the application up ▸ Point the current release symlink into the new release folder ▸ Restart PHP-FPM
Checkout the latest code on the build server ▸ “Build” it (install dependencies, warm the caches up, etc.) ▸ Create a distributable “artifact” (an archived tar.gz file) ▸ Transfer the artifact to the target server ▸ Unarchive into a new release folder ▸ Point the current release symlink into the new release folder ▸ Restart PHP-FPM
the latest code on the build server ▸ Build it (note the absence of quotes) ▸ Transfer the artifact (again no quotes) to the target server ▸ Restart the running application
failure ▸ PHP fits monolithic application strategy ▸ Building microservices with PHP is painful ▸ Consider Go ▸ Easier than Java or Scala ▸ Performance is not far behind C