A Web Developer's Journey

    Published: May 30, 2018

    Web Developer Roadmap


    A Web Developer's Journey

    • 1. Slide1 Web Developer in 2017 Choose your path Git-Version Control SSH HTTP/HTTP’s APIs Basic Terminal Usage Learn to Research Datastructures & Algorithms Character Encodings Github Required For Any Path Create your profile. Explore the relevant opensource projects. Make your habbit to look under the hood for the projects you like. Create and contribute to opensource projects. Legends Personel Recommendation Possibilities Pick any İ i i i x x x Front End Back End DevOps - + - + Click icon to get information. i Click buttons to see branching. A "front-end" application is one that users interact with directly. Front-End The back-end application may interact directly with the front-end, or perhaps more typically, with an intermediate program that mediates the front-end and back-end activities. Back-End DevOps is a combination of software development and operations—and as its name suggests, it's a melding of these two disciplines in order to emphasize communication, collaboration, and cohesion between the traditionally separate developer and IT operations teams. DevOps
    • 2. Slide6 Learn the basics Legends Personel Recommendation Possibilities Pick any Choose your path İ i i i i x x x x jQuery HTML CSS JavaScript Front End - + Click icon to get information. i Click buttons to see branching. HTML is the standard markup language for creating Web pages. HTML stands for Hyper Text Markup Language HTML describes the structure of Web pages using markup HTML elements are the building blocks of HTML pages HTML elements are represented by tags HTML tags label pieces of content such as "heading", "paragraph", "table", and so on Browsers do not display the HTML tags, but use them to render the content of the page HTML CSS stands for Cascading Style Sheets CSS describes how HTML elements are to be displayed on screen, paper, or in other media CSS saves a lot of work. It can control the layout of multiple web pages all at once External stylesheets are stored in CSS files CSS JavaScript is a scripting language designed primarily for adding interactivity to Web pages and creating Web applications. JavaScript jQuery is a lightweight, "write less, do more", JavaScript library. The purpose of jQuery is to make it much easier to use JavaScript on your website. jQuery takes a lot of common tasks that require many lines of JavaScript code to accomplish, and wraps them into methods that you can call with a single line of code. The jQuery library contains the following features: HTML/DOM manipulation CSS manipulation HTML event methods Effects and animations AJAX Utilities jQuery
    • 3. Slide7 Choose Framework Preprocessors Legends Personel Recommendation Possibilities Pick any i İ i i i i i i i i x x x x x x x x x CSS Less Stylus PostCSS Responsive Web Sass Foundatio n Bootstrap Materialize CSS Semantic UI - + Click icon to get information. i Click buttons to see branching. Responsive Web Design makes your web page look good on all devices (desktops, tablets, and phones). Responsive Web Sass (Syntactically Awesome Style Sheets) is an extension of CSS that enables you to use things like variables, nested rules, inline imports and more. It also helps to keep things organised and allows you to create style sheets faster. Sass LESS is a CSS pre-processor that enables customizable, manageable and reusable style sheet for website. LESS is a dynamic style sheet language that extends the capability of CSS. LESS is also cross browser friendly. LESS Stylus is an innovative stylesheet language that compiles down to CSS. Inspired by SASS, Stylus is built with node.js and capable of running in the browser as this interactive tutorial illustrates. Stylus PostCSS is a CSS post-processor engine that allows you to transform regular CSS through JavaScript plugins. Like LESS, Sass, and Stylus, these plugins allow you to use CSS in new and exciting ways like automatically prefixing your CSS for older browsers; adding variables, conditionals, or nesting; and even transpiling next-generation CSS so that it works in older browsers today. PostCSS can be 3–30 times faster than other pre-processors and offers a modular approach, so you can install just the plugins you want to use. PostCSS A Framework for any device, medium, and accessibility. Foundation is a family of responsive front-end frameworks that make it easy to design beautiful responsive websites, apps and emails that look amazing on any device. Foundation is semantic, readable, flexible, and completely customizable. Foundation Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web. Bootstrap Materialize is basically css framework which is used to create responsive websites. Materialize framework is basically built on google’s material design concept. Materialize provides you ready made rich layouts, animations and many more powerful UI. Meterialize CSS Semantic is production ready and partnered with frameworks such as React, Angular, Meteor, and Ember, which means you can integrate it with any of these frameworks to organize your UI layer alongside your application logic. Semantic is a UI framework designed for theming. Semantic UI
    • 4. Slide4 Task Runners Package Manager Choose a Framework Testing Module Loader/ Bundler Legends Personel Recommendation Possibilities Pick any Getting deeper Go on! İ i i i i i i i i i i i i i i i i i i i i i i x x x x x x x x x x x x x x x x x x x x x x JavaScript ES6 TypeScript Flow Npm scripts Gulp Grunt Yarn Npm Flux Redux Angular React Vue.js Ember JS Preact Inferno Jest Mocha Jasmine Webpack RequireJS/AMD Browserify - + Click icon to get information. i Click buttons to see branching. ES6 or EcmaScript 2015 is a significant update to JavaScript with many useful features: •Arrow functions •constant keyword (value cannot be changed) •let keyword (scope level) •Destructuring •Classes •Many Higher-order functions •Template strings •default value in function parameter •rest parameter •spread operator •generators •promises •modules (import/export) ES6 Compiling CoffeeScript source code into JavaScript. Creating minified versions of JavaScript source code. Fetching remote resources that your package will use. NPM Script Gulp is a javascript task runner that lets you automate tasks such as… •Bundling and minifying libraries and stylesheets. •Refreshing your browser when you save a file. •Quickly running unit tests •Running code analysis •Less/Sass to CSS compilation •Copying modified files to an output directory Gulp Grunt is a JavaScript task runner created to implement the many repetitive tasks most developers have to do everyday. It can range from compiling, concatenating, minifying files or even building out template partials. The options are nearly endless. Grunt Apache Hadoop YARN (Yet Another Resource Negotiator) is a cluster management technology. YARN is one of the key features in the second-generation Hadoop 2 version of the Apache Software Foundation's open source distributed processing framework. Originally described by Apache as a redesigned resource manager, YARN is now characterized as a large-scale, distributed operating system for big data applications. Yarn Npm is the package manager for javascript and the world’s largest software registry. Discover packages of reusable code-and assemble them in powerful new ways. Npm AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML's syntax to express your application's components clearly and succinctly. AngularJS's data binding and dependency injection eliminate much of the code you would otherwise have to write. And it all happens within the browser, making it an ideal partner with any server technology. Angular Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. Unlike other monolithic frameworks, Vue is designed from the ground up to be incrementally adoptable. The core library is focused on the view layer only, and is very easy to pick up and integrate with other libraries or existing projects. On the other hand, Vue is also perfectly capable of powering sophisticated Single-Page Applications when used in combination with modern tooling and supporting libraries. Vue.js React is a declarative, efficient, and flexible JavaScript library for building user interfaces. React Ember is a JavaScript front-end framework designed to help you build websites with rich and complex user interactions. It does so by providing developers both with many features that are essential to manage complexity in modern web applications, as well as an integrated development toolkit that enables rapid iteration. Ember.js Preact is a lightweight (just 3kb) alternative to React which has same interface (ES6), but better performance. Preact Inferno is a JavaScript library for building user interfaces in a declarative manner. Rather than working with MVC/MVVM style patterns, Inferno uses a component-based approach where data flows in one direction, making coding predictable, re-usable and highly testable. Based on the concept of learn once, write anywhere, Inferno doesn't impose any restrictions on how you create components. You literally write JavaScript to state how you'd like your UI to look – Inferno does all the rest. Inferno also renders content on the server via inferno-server and NodeJS, so you can write awesome UIs that get rendered full-stack. Inferno Flux is a design pattern, not a specific library or implementation. This library provides the interface for a dispatcher and a store that you can use in your application. Flux A Redux reducer is a simple function that receives the previous state and one action, and it returns the new state based on that action. In a Redux app, you can split your reducer into simpler functions as you would do with any other function. Redux Jest is used by Facebook to test all JavaScript code including React applications. One of Jest's philosophies is to provide an integrated "zero-configuration" experience. Jest Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. Mocha Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests. Jasmine webpack is a module bundler. webpack takes modules with dependencies and generates static assets representing those modules. Webpack RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code. RequireJS/AMD Browserify is a development tool that allows us to write node.js-style modules that compile for use in the browser. Browserify TypeScript is an extension (a “superset”) of the JavaScript language.But TypeScript has to be compiled into JavaScript before it can run in any JavaScript engine (with a web browser or in node.js). This means you cannot embed TypeScript into a web page directly using
    • 5. Slide9 1 2 3 Methodologies Legends Personel Recommendation Possibilities Pick any Go on! İ i i i i i i i i i i i i i i i i i i i i i x x x x x x x x x x x x x x x x x x x x CSS Dive Deep CSS3 Flexbox Gradients Grids Rotate Transfor m Skew Scale Transitions ..etc SVG D3 JavaScript Design Potterns Regex GOF Design Potterns Learn different testing techniques SUITCSS BEM OOCSS SMACSS Systematic CSS - + Click icon to get information. i Click buttons to see branching. SVG stands for Scalable Vector Graphics. SVG defines vector-based graphics in XML format. SVG D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation. D3 CSS stands for Cascading Style Sheets CSS describes how HTML elements are to be displayed on screen, paper, or in other media CSS saves a lot of work. It can control the layout of multiple web pages all at once External stylesheets are stored in CSS files CSS JavaScript is an interpreted programming or script language from Netscape. It is somewhat similar in capability to Microsoft'sVisual Basic, Sun's Tcl, the UNIX-derived Perl, and IBM's REXX. In general, script languages are easier and faster to code in than the more structured and compiled languages such as C and C++. Script languages generally take longer to process than compiled languages, but are very useful for shorter programs. JavaScript The CSS Flexible Box Layout module ( Flexbox) provides a simple solution to many of the design and layout problems web designers and developers have faced since the advent of CSS. Flexbox is a new layout mode in CSS3. The previous version of CSS defined four layout modes: block layout for laying out documents inline layout for laying out text table layout for laying 2D tabular data positioned layout for explicit positioning Flexbox The rotate() CSS function defines a transformation that moves the element around a fixed point (as specified by the transform-origin property) without deforming it. The amount of movement is defined by the specified angle; if positive, the movement will be clockwise, if negative, it will be counter-clockwise. A rotation by 180° is called point reflection. Rotate The scale() CSS function modifies the size of the element. It can either augment or decrease its size and as the amount of scaling is defined by a vector, it can do so more in one direction than in another one. Scale CSS3 gradients let you display smooth transitions between two or more specified colors. Earlier, you had to use images for these effects. However, by using CSS3 gradients you can reduce download time and bandwidth usage. In addition, elements with gradients look better when zoomed, because the gradient is generated by the browser. CSS3 defines two types of gradients: Linear Gradients (goes down/up/left/right/diagonally) Radial Gradients (defined by their center) Gradients The transform property applies a 2D or 3D transformation to an element. This property allows you to rotate, scale, move, skew, etc., elements. Transform CSS3 transitions allows you to change property values smoothly (from one value to another), over a given duration. Transitions CSS Grid Layout is a CSS layout method designed for the two-dimensional layout of items on a webpage or application. Grids The skew() CSS function is a shear mapping, or transvection, distorting each point of an element by a certain angle in each direction. It is done by increasing each coordinate by a value proportionate to the specified angle and to the distance to the origin. The more far from the origin, the more away the point is, the greater will be the value added to it. Skew SUIT CSS is a reliable and testable styling methodology for component-based UI development. A collection of CSS packages and build tools are available as modules. Suit CSS BEM – meaning block, element, modifier – is a front-end naming methodology developed by the team at Yandex. BEM follows simple rules to name and organise your CSS and gives everyone on a project a declarative syntax which they can use so that they're on the same page. BEM is ideal for teams of developers on larger projects. BEM Object oriented CSS (OOCSS) is a methodology of writing reusable CSS that is fast, scalable and maintainable. It’s the first of the popular CSS “systems” (SMACSS & BEM are two other popular systems) that aim at making CSS more modular and scaleable. In layman’s terms, objects in front-end development are simply HTML elements. The CSS is where we make those objects, or elements, modular and location independent to be able to place them anywhere on a page and behave predictably. OOCSS SMACSS is an approach to writing css and html with more emphasis placed on using classes. Unlike OOCSS, it doesn’t suggest using classes for everything. It’s fine with IDs and descendent selectors where appropriate. SMACSS Systematic CSS is meant to be a simpler alterative to existing CSS methodologies: There are fewer naming-conventions to remember, and the class-naming convention is intended to be more intuitive. In the Systematic CSS methodology, the process of developing a new web design is broken up into four phases: Layout Elements Widgets Modifiers Systematic CSS Design patterns are advanced object-oriented solutions to commonly occurring software problems. Patterns are about reusable designs and interactions of objects. Each pattern has a name and becomes part of a vocabulary when discussing complex design solutions. Design Patterns Regular expressions are patterns used to match character combinations in strings. In JavaScript, regular expressions are also objects. These patterns are used with the exec and test methods of RegExp, and with the match, replace, search, and split methods of String. This chapter describes JavaScript regular expressions. Regex Gang of Four (GoF) Patterns are 23 main software design patterns providing recurring solutions to common problems in software design. They were developed by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, often referred to as the Gang of Four. GoF Design Patterns
    • 6. Slide11 Legends Personel Recommendation Possibilities Pick any Choose your path İ i i i i i i i x x x x x x x Back-End - + Ruby Node.js Python PHP 7 Java (Grails, Spring, Play) Go C# (.NET) Click icon to get information. i Click buttons to see branching. Ruby is a programming language. It was created 20 years ago by Yukihiro “Matz” Matsumoto. By most measures of programming language popularity, Ruby ranks among the top ten, though usually as tenth (or so) in popularity, and largely due to the popularity of Rails. Like Java or the C language, Ruby is a general-purpose programming language, though it is best known for its use in web programming. Ruby Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world. Node.js is an open source server framework Node.js is free Node.js runs on various platforms (Windows, Linux, Unix, Mac OS X, etc.) Node.js uses JavaScript on the server Node.js Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python's simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms, and can be freely distributed. Phyton PHP 7 is a major release of PHP programming language and is touted to be a revolution in the way web applications can be developed and delivered for mobile to enterprises and the cloud. This release is considered to be the most important change for PHP after the release of PHP 5 in 2004. PHP 7 C# is an elegant and type-safe object-oriented language that enables developers to build a variety of secure and robust applications that run on the .NET Framework. You can use C# to create Windows client applications, XML Web services, distributed components, client-server applications, database applications, and much, much more. Visual C# provides an advanced code editor, convenient user interface designers, integrated debugger, and many other tools to make it easier to develop applications based on the C# language and the .NET Framework. C# Java is a widely used programming language expressly designed for use in the distributed environment of the internet. It is the most popular programming language for Android smartphone applications and is among the most favored for edge device and internet of things development. Java Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Go
    • 7. Slide10 Framework Testing Package Manager Legends Personel Recommendation Possibilities Pick any İ i i i i i x x x x x Ruby Sinatra ByeBug Ruby on Rails RSpec RubyGems - + Click icon to get information. i Click buttons to see branching. Byebug is a simple to use, feature rich debugger for Ruby. It uses the TracePoint API for execution control and the Debug Inspector API for call stack navigation, so it doesn't depend on internal core sources. It's developed as a C extension, so it's fast. And it has a full test suite so it's reliable. It allows you to see what is going on inside a Ruby program while it executes and offers many of the traditional debugging features such as: Stepping: Running your program one line at a time. Breaking: Pausing the program at some event or specified instruction, to examine the current state. Evaluating: Basic REPL functionality, although pry does a better job at that. Tracking: Keeping track of the different values of your variables or the different lines executed by your program. Byebug Rails is a development tool which gives web developers a framework, providing structure for all the code they write. The Rails framework helps developers to build websites and applications, because it abstracts and simplifies common repetitive tasks. Rails is written in Ruby, the programming language which is also used alongside Rails. Ruby on Rails RSpec is a unit test framework for the Ruby programming language. RSpec is different than traditional xUnit frameworks like JUnit because RSpec is a Behavior driven development tool. What this means is that, tests written in RSpec focus on the "behavior" of an application being tested. RSpec does not put emphasis on, how the application works but instead on how it behaves, in other words, what the application actually does. RSpec RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries (in a self-contained format called a "gem"), a tool designed to easily manage the installation of gems, and a server for distributing them. The gem command is usd to build, upload, download, and install Gem packages. RubyGems Sinatra is a Domain Specific Language implemented in Ruby that's used for writing web applications. Created by Blake Mizerany, Sinatra is Rack-based, which means it can fit into any Rack-based application stack, including Rails. It's used by companies such as Apple, BBC, GitHub, LinkedIn, and more. Sinatra
    • 8. Slide12 Package Maneger Framework Package Manager Legends Personel Recommendation Possibilities Pick any İ i i i i i i i i i i i x x x x x x x x x x x Node.js Yarn Npm Express Jest hapi Koa Sails.js Mocha Jasmine Chai should.js - + Click icon to get information. i Click buttons to see branching. NPM is a package manager for Node.js packages, or modules if you like. Npm Yarn is a new JavaScript package manager built by Facebook, Google, Exponent and Tilde. As can be read in the official announcement, its purpose is to solve a handful of problems that these teams faced with npm, namely: installing packages wasn’t fast/consistent enough, and there were security concerns, as npm allows packages to run code on installation. Yarn Express is a framework of Node.js that allows you to use several very useful and powerful features without having to reinvent the wheel, helps you organize your application's routing and use any templating solution with minimal effort. It also allows for much better organization of your code. Express Hapi is the framework for rapidly building RESTful & Real- Time web applications and services with Node.js. Hapi Koa framework is a basic bootstrap library for creating a Koa server. It provides a router constructor with basic middleware such as a request parser and validator. Koa Sails is a Javascript framework designed to resemble the MVC architecture from frameworks like Ruby on Rails. It makes the process of building Node.js apps easier, especially APIs, single page apps and realtime features, like chat. Sails.js Jest is a JSON-RPC compatible client/server library that allows a Node.js app execute methods on one or more server. It provides these features: Client authentication Automatic load balancing and failover management Service discovery and introspection Compatibility with both promises and callback Jest Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. Mocha The Jasmine node package contains helper code for developing and running Jasmine tests for node-based projects. Jasmine Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework. Chai SHOULD is an expressive, readable, framework-agnostic assertion library. The main goals of this library are to be expressive and to be helpful. It keeps your test code clean, and your error messages helpful. By default (when you require('should')) should extends the Object.prototype with a single non-enumerable getter that allows you to express how that object should behave. It also returns itself when required with require. It is also possible to use should.js without getter (it will not even try to extend Object.prototype), just require('should/as-function'). Or if you already use version that auto add getter, you can call .noConflict function. Should.js
    • 9. Slide13 Testing Frameworks Sync Async Package Manager 1 2 3 1 2 3 Legends Personel Recommendation Possibilities Pick any İ i i i i i i i i i i x x x x x x x x x x Phyton Py.test Pip Unittest/pyUnit Django aiohttp doctest Flask Pyramid Tornado gevent - + Click icon to get information. i Click buttons to see branching. Pip is a package management system used to install and manage software packages written in Python. Pip This unit testing framework, dubbed 'PyUnit' by convention, is a Python language version of JUnit. JUnit was written by smart cookies Kent Beck and Erich Gamma, and is, in turn, a Java version of Kent's Smalltalk testing framework. Each is the de facto standard unit testing framework for its respective language, and therefore both are a strong basis for an effective and elegant Python framework. Unittest/pyUnit The pytest framework makes it easy to write small tests, yet scales to su pport complex functional testing for applications and libraries. Py.test Doctest lets you test your code by running examples embedded in the documentation and verifying that they produce the expected results. It works by parsing the help text to find examples, running them, then comparing the output text against the expected value. Doctest Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source. Django Flask is a micro web framework written in Python and based on the Werkzeug toolkit and Jinja2 template engine. It is BSD licensed. Flask is easy to get started with as a beginner because there is little boilerplate code for getting a simple app up and running. Flask Pyramid is an open source WSGI web framework based on the Model-View-Controller (MVC) architectural pattern. It is developed as part of the Pylons Project. It is licensed under a BSD-like license. Pyramid makes it easy to write web applications. As your application grows, Pyramid offers many features that make writing complex software take less effort. Pyramid is a very flexible, lightweight framework for Python which can be used to quickly develop a complex application. Pyramid Python 3.5 added some new syntax that allows developers to create asynchronous applications and packages easier. One such package is aiohttp which is an HTTP client/server for asyncio. Basically it allows you to write asynchronous clients and servers. The aiohttp package also supports Server WebSockets and Client WebSockets. You can install aiohttp using pip. Aiohttp Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user. Tornado Gevent is a coroutine -based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libev event loop. Features include: Fast event loop based on libev (epoll on Linux, kqueue on FreeBSD). Lightweight execution units based on greenlet. API that re-uses concepts from the Python standard library (for example there are gevent.event.Events and gevent.queue.Queues). Cooperative sockets with SSL support DNS queries performed through threadpool or c-ares. Monkey patching utility to get 3rd party modules to become cooperative gevent is inspired by eventlet but features more consistent API, simpler implementation and better performance. Gevent
    • 10. Slide14 Debugger / Profiler Framework Testing Package Manager Legends Personel Recommendation Possibilities Pick any Go on! İ i i i i i i i i i i i i i i i x x x x x x x x x x x x x x x PHP 7 XHProf Composer PSRs Laravel New Relic Symfony Slim PHP Unit phpspec Codeception Blackfire xDebug Lumen Silex Mockery - + Click icon to get information. i Click buttons to see branching. Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you. Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you. Composer is it deals with "packages" or libraries, but it manages them on a per-project basis, installing them in a directory (e.g. vendor) inside your project. By default it does not install anything globally. Thus, it is a dependency manager. It does however support a "global" project for convenience via the global command. Composer Xdebug provides an interface for debugger clients that interact with running PHP scripts.Xdebug is a free and open source project by Derick Rethans and is probably one of the most useful PHP extensions Xdebug's (remote) debugger allows you to examine data structure, interactively walk through your and debug your code. The protocol that is being used is open, and is called DBGp. xDebug XHProf is a utility for profiling PHP. Unlike Xdebug profiling, it profiles both CPU cycles and memory usage. XHProf is a light-weight hierarchical and instrumentation based profiler. During the data collection phase, it keeps track of call counts and inclusive metrics for arcs in the dynamic callgraph of a program. It computes exclusive metrics in the reporting/post processing phase, such as wall (elapsed) time, CPU time and memory usage. XHProf handles recursive functions by detecting cycles in the callgraph at data collection time itself and avoiding the cycles by giving unique depth qualified names for the recursive invocations. XHProf New Relic APM Pro offers a wide array of metrics that provide a nearly real-time look into the performance of a web application and is provided to all sites on Pantheon for free. Using New Relic not only makes it easy for you to monitor to your performance, but it can also speed up the support process by helping our support team visualize corresponding performance and symptoms. New Relic Blackfire is a web app profiler tool that helps you to debug your application & optimize its performance. Once you install & configure it on your server, it will tell you the complete performance of your php app like it will show you the I/O, memory consumption, CPU Time. When you will hit your php app in browser & start profiling your app through blackfire tool, you will get an option “view profile”, just click on that option and get the complete result of your app in which it will visualize you how your app runs & calling php functions step by step. Blackfire ------------------- PSRs Laravel is a powerful MVC PHP framework, designed for developers who need a simple and elegant toolkit to create full-featured web applications. Laravel was created by Taylor Otwell. Laravel Symfony is a PHP web application framework and a set of reusable PHP components/libraries. The leading PHP framework to create websites and web applications. Built on top of the Symfony Components. Symfony Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs. Slim supports any PSR-7 HTTP message implementation so you may inspect and manipulate HTTP message method, status, URI, headers, cookies, and body. Slim The stunningly fast micro-framework by Laravel. Lumen is a brand new PHP framework from Taylor Otwell designed for building lightning fast micro-services and API’s. When speed is a necessity, Lumen should be your first choice. One of the neat things about the framework is you can still use all the Laravel features you love like Eloquent, caching, queues, validation, routing, middleware, and the powerful Laravel service container. Lumen Silex is a PHP microframework for PHP. It is built on the shoulders of Symfony and Pimple and also inspired by sinatra. A microframework provides the guts for building simple single-file apps. Silex aims to be: Silex exposes an intuitive and concise API that is fun to use. Extensible: Silex has an extension system based around the Pimple micro service-container that makes it even easier to tie in third party libraries. Testable: Silex uses Symfony's HttpKernel which abstracts request and response. This makes it very easy to test apps and the framework itself. It also respects the HTTP specification and encourages its proper use. Silex PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks. PHP Unit phpspec is a tool which can help you write clean and working PHP code using behaviour driven development or BDD. BDD is a technique derived from test-first development. BDD is a technique used at story level and spec level. phpspec is a tool for use at the spec level or SpecBDD. The technique is to first use a tool like phpspec to describe the behaviour of an object you are about to write. Next you write just enough code to meet that specification and finally you refactor this code. Phpspec Codeception is a multi-featured testing framework for PHP. It can handle unit, functional, and acceptance testing of web applications and it's powered by the already very popular PHPUnit testing framework. Codeception allows us to test different kinds of user perspectives and site scenarios while they are visiting our app to ensure a pleasant user experience. By testing multiple scenarios, we can simulate a user's natural flow throughout our application to make sure the app is working as expecting. Codeception Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit’s phpunit-mock- objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending. Mockery
    • 11. Slide15 1 2 3 1 2 Legends Personel Recommendation Possibilities Pick any Go on! İ i i i i i i i i i i i i i i x x x x x x x x x x x x x x Caddy RESTful APIs Read about MVC Authentication SOLID, YAGNI etc Regular Expressions Security Docker Apache Nginx JSON Web Token (JWT) OAuth 2.0 Web Server GraphQL - + Click icon to get information. i Click buttons to see branching. A Web server is a program that uses HTTP (Hypertext Transfer Protocol) to serve the files that form Web pages to users, in response to their requests, which are forwarded by their computers' HTTP clients. Dedicated computers and appliances may be referred to as Web servers as well. Web Server A RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. A RESTful API -- also referred to as a RESTful web service -- is based on representational state transfer (REST) technology, an architectural style and approach to communications often used in web services development. RESTful APIs ASP.NET MVC is a web application development framework launched by Microsoft as an alternative to the classic WebForms model in ASP.NET. It is based on the Model-View- Controller pattern, which lends the framework its name. ASP.NET MVC uses a very different approach, which tries to address various issues developers have had with the WebForms model. Read About MVC Authentication is a process in which the credentials provided are compared to those on file in a database of authorized users’ information on a local operating system or within an authentication server. If the credentials match, the process is completed and the user is granted authorization for access. The permissions and folders returned define both the environment the user sees and the way he can interact with it, including hours of access and other rights such as the amount of allocated storage space. Authentication Solıd: Solid-state storage (SSS) is a type of computer storage media made from silicon microchips. SSS stores data electronically instead of magnetically, as spinning hard disk drives (HDDs) or magnetic oxide tape do. Yagni: YAGNI is a principle behind the extreme programming (XP) practice of "Do the Simplest Thing That Could Possibly Work”. Even when this principle is part of XP, it is applicable in all kind of methodologies and own processes of development. SOLID, YAGNI A regular expression is an object that describes a pattern of characters. Regular expressions are used to perform pattern-matching and "search-and-replace" functions on text. Regular Expressions --------------------- Security GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools. GraphQL Docker is the world’s leading software container platform. Developers use Docker to eliminate “works on my machine” problems when collaborating on code with co-workers. Operators use Docker to run and manage apps side-by-side in isolated containers to get better compute density. Enterprises use Docker to build agile software delivery pipelines to ship new features faster, more securely and with confidence for both Linux and Windows Server apps. Docker Caddy, sometimes clarified as the Caddy web server, is an open source, HTTP/2-enabled web server written in Go. Caddy Apache Web Server is an open source Web server creation, deployment and management software. Apache Web Server is designed to create Web servers that have the ability to host one or more HTTP-based websites. Notable features include the ability to support multiple programming languages, server side scripting, an authentication mechanism and database support. Apache Web Server can be enhanced by manipulating the code base or adding multiple extensions/add-ons. Apache NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. NGINX is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption. NGINX is one of a handful of servers written to address the C10K problem. Unlike traditional servers, NGINX doesn’t rely on threads to handle requests. Instead it uses a much more scalable event-driven (asynchronous) architecture. This architecture uses small, but more importantly, predictable amounts of memory under load. Even if you don’t expect to handle thousands of simultaneous requests, you can still benefit from NGINX’s high-performance and small memory footprint. NGINX scales in all directions: from the smallest VPS all the way up to large clusters of servers. Nginx JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. JWT.IO allows you to decode, verify and generate JWT. JSON Web Token The OAuth 2.0 specification defines a delegation protocol that is useful for conveying authorization decisions across a network of web-enabled applications and APIs. OAuth is not an API or a service: it is an open standard for authorization and any developer can implement it. OAuth is a standard that applications can use to provide client applications with “secure delegated access”. OAuth works over HTTP and authorizes Devices, APIs, Servers and Applications with access tokens rather than credentials. OAuth
    • 12. Slide16 Relational Databases Caching NoSQL Databases Legends Personel Recommendation Possibilities Pick any Go on! İ i i i i i i i i i i i i x x x x x x x x x x x x Storage PostgreSQL Oracle MariaDB Memcached Redis MongoDB Cassandra Redis MySQL MSSQL RethinkDB CouchBase - + Click icon to get information. i Click buttons to see branching. Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. Memcached Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. Redis Oracle Database is an object-relational database management system produced and marketed by Oracle Corporation. Oracle PostgreSQL is a powerful, open source object-relational database system. It runs on all major operating systems, including Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, macOS, Solaris, Tru64), and Windows. It is fully ACID compliant, has full support for foreign keys, joins, views, triggers, and stored procedures (in multiple languages). It includes most SQL:2008 data types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and TIMESTAMP. It also supports storage of binary large objects, including pictures, sounds, or video. It has native programming interfaces for C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, among others, and exceptional documentation. PostgreSQL MariaDB Server is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, WordPress.com and Google. MariaDB MySQL is an open source relational database management system (RDBMS) based on Structured Query Language (SQL). MySQL runs on virtually all platforms, including Linux, UNIX, and Windows. Although it can be used in a wide range of applications, MySQL is most often associated with web-based applications and online publishing and is an important component of an open source enterprise stack called LAMP. MySQL Microsoft SQL Server is a relational database management system, or RDBMS, that supports a wide variety of transaction processing, business intelligence and analytics applications in corporate IT environments. It's one of the three market-leading database technologies, along with Oracle Database and IBM's DB2. MsSQL Redis (Remote DIctionary Server) is an open source, networked, single threaded, in- memory, advanced key- value store with optional durability. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. Redis MongoDB is a cross-platform and open-source document-oriented database, a kind of NoSQL database. As a NoSQL database, MongoDB shuns the relational database’s table-based structure to adapt JSON-like documents that have dynamic schemas which it calls BSON. This makes data integration for certain types of applications faster and easier. MongoDB is built for scalability, high availability and performance from a single server deployment to large and complex multi-site infrastructures. MongoDB is written in C++. MongoDB Apache Cassandra is a highly scalable, high-performance distributed database designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. It is a type of NoSQL database. Cassandra RethinkDB is a free and open-source, NoSQL, distributed document-oriented database originally created by the company of the same name. ReThinkDB CouchBase is a Key-Value NoSQL database that can act as memcache on steroids or as a fully functional NoSQL JSON document store. CouchBase
    • 13. Slide17 1 2 3 4 5 Up your Game further! Legends Personel Recommendation Possibilities Pick any Go on! İ i i i i i i i x x x x x x x Search Engines GOF Design Patterns Architectural Patterns Give DDD a shot Learn different testing techniques - + Click icon to get information. i Click buttons to see branching. Solr Sphinx ElasticSearch Search engines are programs that search documents for specified keywords and returns a list of the documents where the keywords were found. Search Engines Apache Solr is an enterprise-capable, open source search platform based on the Apache Lucene search library. The Solr search engine is one of the most widely deployed search platforms worldwide. Solr is written in Java, and provides both a RESTful XML interface, and a JSON API with which search applications can be built. Solr Sphinx is an open source full text search server, designed from the ground up with performance, relevance (aka search quality), and integration simplicity in mind. It's written in C++ and works on Linux (RedHat, Ubuntu, etc), Windows, MacOS, Solaris, FreeBSD, and a few other systems. Sphinx lets you either batch index and search data stored in an SQL database, NoSQL storage, or just files quickly and easily — or index and search data on the fly, working with Sphinx pretty much as with a database server. Sphinx Elasticsearch is an open-source, RESTful, distributed search and analytics engine built on Apache Lucene. Since the first version of Elasticsearch was released in 2010, it has quickly become the most popular search engine, and is commonly used for log analytics, full-text search, and operational intelligence use cases. When coupled with Kibana, a visualization tool, Elasticsearch can be used to provide near-real time analytics using large volumes of log data. Elasticsearch Gang of Four (GoF) Patterns are 23 main software design patterns providing recurring solutions to common problems in software design. They were developed by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, often referred to as the Gang of Four. GoF Design Patterns Architectural patterns are a method of arranging blocks of functionality to address a need. Patterns can be used at the software, system, or enterprise levels. Good pattern expressions tell you how to use them, and when, why, and what trade-offs to make in doing so. Patterns can be characterized according to the type of solution they are addressing (e.g., structural or behavioral). Architectural Patterns Domain Driven Design is a methodology and process prescription for the development of complex systems whose focus is mapping activities, tasks, events, and data within a problem domain into the technology artifacts of a solution domain. Domain Driven Design as a methodology provides guidelines for how this model development and technology development can result in a system that meets the needs of the people using it while also being robust in the face of change in the problem domain. Give DDD a Shot
    • 14. Slide18 Legends Personel Recommendation Possibilities Pick any Choose your path İ i i i i x x x x DevOps Operating System Automation Cloud CI/CD - + Click icon to get information. i Click buttons to see branching. The operating system (OS) is the most important program that runs on a computer. Every general-purpose computer must have an operating system to run other programs and applications. Operating System Automation is the creation of technology and its application in order to control and monitor the production and delivery of various goods and services. It performs tasks that were previously performed by humans. Automation Cloud computing is a general term for the delivery of hosted services over the internet. In the simplest terms, cloud computing means storing and accessing data and programs over the Internet instead of your computer's hard drive. Cloud Continuous Delivery (CD) is the practice of using automation to produce releasable software in short iterations, allowing teams to ship working software more frequently. Continuous Integration (CI) is a development practice where developers integrate code into a shared repository frequently, preferably several times a day. Each integration can then be verified by an automated build and automated tests. CI/CD
    • 15. Slide19 Legends Personel Recommendation Possibilities Pick any İ i i x x Operating System Linux Unix - + Click icon to get information. i Click buttons to see branching. Linux is a Unix-like, open source and community-developed operating system for computers, servers, mainframes, mobile devices and embedded devices. It is supported on almost every major computer platform including x86, ARM and SPARC, making it one of the most widely supported operating systems. As an operating system, Linux is software that sits underneath all of the other software on a computer, receiving requests from those programs and relaying these requests to the computer’s hardware. Linux Unix is an operating system that originated at Bell Labs in 1969 as an interactive time-sharing system. UNIX is a multi-user, multitasking operating system (OS). Unix
    • 16. Slide20 Legends Personel Recommendation Possibilities Pick any İ i i i i i i i x x x x x x x Automation AWS CloudFormation Terrafor m CFEngine Salt Stack Chef Ansible Puppet - + Click icon to get information. i Click buttons to see branching. AWS CloudFormation is a service that helps you model and set up your Amazon Web Services resources so that you can spend less time managing those resources and more time focusing on your applications that run in AWS. You create a template that describes all the AWS resources that you want (like Amazon EC2 instances or Amazon RDS DB instances), and AWS CloudFormation takes care of provisioning and configuring those resources for you. You don't need to individually create and configure AWS resources and figure out what's dependent on what; AWS CloudFormation handles all of that. AWS CloudFormation Terraform is a really handy tech tool that lets you build, change, and version infrastructure safely and efficiently. It’s specifically designed to support and manage the lifecycle of a wide range of resources, including physical servers, networking, and SaaS products. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned. Terraform CFEngine is an IT infrastructure automation and Continuous Operations framework that helps engineers, system administrators and other stakeholders in an IT organization manage IT infrastructure while ensuring service levels and compliance. CFEngine runs on the smallest embedded devices, on servers, in the cloud, and on mainframes, easily handling tens of thousands of hosts. It is available as both open source and commercial software. CFEngine SaltStack, also known as Salt, is a computer infrastructure and application management software package that automates the packaging and provisioning of code into an organization's operational IT environment. The software provides configuration management for IT operations, DevOps and CloudOps environments. An open source version of SaltStack is known as Salt Open or Salt OSS. SaltStack The back-end application may interact directly with the front-end, or perhaps more typically, with an intermediate program that Whether you have five or five thousand servers, Chef lets you manage them all by turning infrastructure into code. Infrastructure described as code is flexible, versionable, human- readable, and testable. Whether your infrastructure is in the cloud, on-premises or in a hybrid environment, you can easily and quickly adapt to your business’s changing needs with Chef.the front-end and back-end activities. Chef Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs. Ansible fits into any existing development practice and can be integrated into any workflow by utilizing the Tower API and the command-line interface. Ansible Puppet is a server management application that can use ServiceNow configuration item (CI) data to bring computers into a desired state by managing files, services, or packages installed on physical or virtual machines. ServiceNow can interact with Puppet systems that run Linux. Puppet
    • 17. Slide21 Legends Personel Recommendation Possibilities Pick any İ i i i i i i i x x x x x x x Cloud Cloud Foundry Rackspace AWS Heroku Azure Google Cloud Platform Digitalocean - + Click icon to get information. i Click buttons to see branching. Cloud Foundry is the industry's leading cloud application platform, used by half of the Fortune 500. Cloud Foundry is an open source cloud platform as a service (PaaS) on which developers can build, deploy, run and scale applications. Cloud Foundry Rackspace is a managed cloud computing company that aims to make it easy to manage private and public cloud deployments. The Rackspace Cloud is a set of cloud computing products and services billed on a utility computing basis from the US-based company Rackspace. Rackspace Amazon Web Services (AWS) is a secure cloud services platform, offering compute power, database storage, content delivery and other functionality to help businesses scale and grow. Explore how millions of customers are currently leveraging AWS cloud products and solutions to build sophisticated applications with increased flexibility, scalability and reliability. AWS Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps . Heroku Azure is an internet-scale cloud services platform hosted in Microsoft data centers, which provides an operating system and a set of developer services that can be used individually or together. Azure’s flexible and interoperable platform can be used to build new applications to run from the cloud or enhance existing applications with cloud-based capabilities. Its open architecture gives developers the choice to build web applications, applications running on connected devices, PCs, servers, or hybrid solutions offering the best of online and on- premises. Azure Google Cloud Platform is a suite of public cloud computing services offered by Google. The platform includes a range of hosted services for compute, storage and application development that run on Google hardware. Google Cloud Platform services can be accessed by software developers, cloud administrators and other enterprise IT professionals over the public Internet or through a dedicated network connection. Google Cloud Platform DigitalOcean is a cloud infrastructure provider focused on simplifying web infrastructure for software developers. DigitalOcean
    • 18. Slide22 Legends Personel Recommendation Possibilities Pick any Go on! İ i i i i i x x x x x CI/CD Jenkins Travis TeamCity Drone Bamboo - + Click icon to get information. i Click buttons to see branching. Jenkins is an award-winning, cross-platform, continuous integration and continuous delivery application that increases your productivity. Use Jenkins to build and test your software projects continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. It also allows you to continuously deliver your software by providing powerful ways to define your build pipelines and integrating with a large number of testing and deployment technologies. Jenkins Travis CI makes working in a team for a software project easier with automated builds. These builds are triggered automatically when each developer checks in their code to the repository. Travis CI is a hosted continuous integration platform that is free for all open source projects hosted on Github. Travis TeamCity is the mature CI server, coming from the labs of the JetBrains company. JetBrains has established authority in the software development world, and their tools like WebStorm and Resharper are used by developers worldwide. TeamCity offers all the features in its free version, but it is limited to the 20 configurations and 3 build agents. TeamCity Drone is a lightweight, powerful continuous delivery platform built for containers. Drone is packaged and distributed as a Docker image and can be downloaded from Dockerhub. Drone Bamboo is a continuous integration (CI) server that can be used to automate the release management for a software application, creating a continuous delivery pipeline. Bamboo
    • 19. Slide23 Legends Personel Recommendation Possibilities Pick any Choose your path İ i i i i i x x x x x Monitoring and Alerting Cluster Managers Love for Terminal Containers Web Servers - + Click icon to get information. i Click buttons to see branching. ------------------- Monitoring and Alerting Cluster Manager runs on all the nodes of the cluster and orchestrates cluster wide operations. The Cluster Manager is responsible for the following operations: Cluster topology and node membership Managing node membership, adding and removing nodes Discovery of cluster topology by internal and external connections Service layout for data, index, and query services across nodes Rebalancing the load as cluster topology changes Node health, and failure and service monitoring Cluster Managers ------------------- Love for Terminal Containers are a method of operating system virtualization that allow you to run an application and its dependencies in resource-isolated processes. Containers allow you to easily package an application's code, configurations, and dependencies into easy to use building blocks that deliver environmental consistency, operational efficiency, developer productivity, and version control. Containers can help ensure that applications deploy quickly, reliably, and consistently regardless of deployment environment. Containers also give you more granular control over resources giving your infrastructure improved efficiency. Running containers in the AWS Cloud allows you to build robust, scalable applications and services by leveraging the benefits of the AWS Cloud such as elasticity, availability, security, and economies of scale. You also pay for only as much resources as you use. Containers A Web server is a program that uses HTTP (Hypertext Transfer Protocol) to serve the files that form Web pages to users, in response to their requests, which are forwarded by their computers' HTTP clients. Dedicated computers and appliances may be referred to as Web servers as well. Web Servers
    • 20. Slide24 Legends Personel Recommendation Possibilities Pick any İ i i i i i i x x x x x x Monitoring and Alerting AppDynamics Nagios PagerDuty Graphite Prometheus Zabbix - + Click icon to get information. i Click buttons to see branching. AppDynamics is a next generation Application Performance Management (APM) and monitoring solution that aims to help companies avoid downtime by proactively managing their resources. With a focus on managing the performance and availability of applications across cloud computing environments as well as inside the data center,AppDynamics specializes in complex, distributed environments. It currently supports Java, .NET and PHP applications, and offers both SaaS and on premise deployments. App Dynamics Nagios is a powerful monitoring system that enables organizations to identify and resolve IT infrastructure problems before they affect critical business processes. Nagios PagerDuty provides IT alerting, on-call scheduling, escalation policies and incident tracking to fix problems in your apps, servers and websites. Using PagerDuty, you can set up online and on-call duty schedule, define contacts for alerting and build an effective escalation path for your alerting. PagerDuty Graphite stores numeric samples for named time series. Graphite metric names consist of dot-separated components which implicitly encode dimensions. Further, especially when Graphite is used in combination with StatsD, it is common to store only aggregated data over all monitored instances, rather than preserving the instance as a dimension and being able to drill down into individual problematic ones. Graphite Prometheus is an open-source systems monitoring and alerting toolkit originally built at SoundCloud. It is now a standalone open source project and maintained independently of any company. The Prometheus ecosystem consists of multiple components, many of which are optional: the main Prometheus server which scrapes and stores time series data client libraries for instrumenting application code a push gateway for supporting short-lived jobs special-purpose exporters (for HAProxy, StatsD, Graphite, etc.) an alertmanager various support tools Prometheus Zabbix is a popular open source monitoring solution. Zabbix allows not only to collect, store and analyze information about a monitored environment, but inform responsible personnel about occurrence of events using many different channels and options. Zabbix provides a complete workflow: sending notifications, allowing acknowledgement of information received, escalation of information to other people, and ability to take actions. Different stages of the notification workflow are described below: Receive a message Execute a command Escalate response to problems Zabbix
    • 21. Slide25 Legends Personel Recommendation Possibilities Pick any İ i i i i i x x x x x Cluster Managers Kubernetes Mesosphere Mesos Docker Swarm Nomad - + Click icon to get information. i Click buttons to see branching. Kubernetes is an open-source platform for automating deployment, scaling, and operations of application containers across clusters of hosts, providing container-centric infrastructure. Kubernetes, is a automates Linux container operations. It eliminates many of the manual processes involved in deploying and scaling containerized applications. In other words, you can cluster together groups of hosts running Linux containers, and Kubernetes helps you easily and efficiently manage those clusters. These clusters can span hosts across public, private, or hybrid clouds. Kubernetes Mesosphere is a system that combines a number of components to effectively manage server clustering and highly available deployments on top of an existing operating system layer. Unlike systems like CoreOS, Mesosphere is not a specialized operating system and is instead a set of packages. Mesosphere Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively. Mesos is built using the same principles as the Linux kernel, only at a different level of abstraction. Mesos Docker Swarm is the Docker-native solution for deploying a cluster of Docker hosts. You can use it to quickly deploy a cluster of Docker hosts running either on your local machine or on supported cloud platforms. Docker Swarm Nomad is distributed, highly available, and scales to thousands of nodes spanning multiple datacenters and regions. Nomad provides a common workflow to deploy applications across an infrastructure. Developers use a declarative job specification to define how an application should be deployed and the resources it requires (CPU, memory, disk). Nomad accepts these jobs and finds available resources to run them. The scheduling algorithm ensures all constraints are satisfied, and packs as many applications on a host as possible to optimize resource utilization. Additionally, Nomad supports virtualized, containerized, or standalone applications running on all major operating systems giving it the flexibility to support a broad range of workloads. Nomad
    • 22. Slide26 awk, sed, grep, sort, uniq, cat, cut, echo, fmt, tr, nl, egrep, f grep, wc, ..etc ps, top, htop, atop, ..etc nmon, iostat, sar, vmstat, ..etc nmap, tcpdump, ping, traceroute, airman, airodump, ..etc Legends Personel Recommendation Possibilities Pick any İ i i i i x x x x Love for Terminal Compiling apps from source (gcc, make and other related stuff) Bash Scripts Vim/Nano Commands/Tool s Text Manipulation Process Monitoring System Performance Network - + Click icon to get information. i Click buttons to see branching. GCC: The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages (libstdc++,...). GCC was originally written as the compiler for the GNU operating system. The GNU system was developed to be 100% free software, free in the sense that it respects the user's freedom. GNU Make: an automation tool for compiling and building applications. Compiling Apps From Source A Bash script is a plain text file which contains a series of commands. These commands are a mixture of commands we would normally type ouselves on the command line and commands we could type on the command line but generally wouldn't. An important point to remember though is: Anything you can run normally on the command line can be put into a script and it will do exactly the same thing. Similarly, anything you can put into a script can also be run normally on the command line and it will do exactly the same thing. Bash Scripts Vim and Nano are completely different terminal text editors. To differentiate, it will be better to list some features of them. Since we don't use terminal editors for normal edits or coding, I'm listing some of the most interesting features that help for the way we use them today. Nano: Easy to use and master. Nano has most of the shortcuts listed at the bottom of the window, making it extremely simple to use. Search function Search and replace "Goto line" command Automatic indentation Vim: Tough to get started with and master. The editing and command modes will confuse beginners. Session recovery Split screen Tab expansion Completion commands Syntax coloring Vim/Nano The back-end application may interact directly with the front-end, or perhaps more typically, with an intermediate program that mediates the Commands: A command is a specific instruction given to a computer application to perform some kind of task or function. In Windows, commands are usually entered via a command line interpreter like Command Prompt or Recovery Console. Tools: A tool is any physical item that can be used to achieve a goal, especially if the item is not consumed in the process.and back-end activities. Commands/Tools
    • 23. Slide27 Legends Personel Recommendation Possibilities Pick any İ i i i x x x Containers Docker rkt LXC - + Click icon to get information. i Click buttons to see branching. Docker containers running on a single machine share that machine's operating system kernel; they start instantly and use less compute and RAM. Images are constructed from filesystem layers and share common files. This minimizes disk usage and image downloads are much faster. Docker rkt is a container system developed by CoreOS as a light weight and secure alternative to Docker. It is built based on an open container standard known as “App Container” or “appc” specification. This allows rkt images to be portable across many container systems (such as Kurma, JetPack, etc.) that follow the “appc” open format. RKT LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers. LXC
    • 24. Slide28 Differences and when to use what Legends Personel Recommendation Possibilities Pick any Go on! İ i i i i i x x x x x Web Servers Apache Nginx IIS Caddy Tomcat - + Click icon to get information. i Click buttons to see branching. Apache is the most widely used web server software. Developed and maintained by Apache Software Foundation, Apache is an open source software available for free. It runs on 67% of all webservers in the world. It is fast, reliable, and secure. It can be highly customized to meet the needs of many different environments by using extensions and modules. Most WordPress hosting providers use Apache as their web server software. However, WordPress can run on other web server software as well. Apache NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. NGINX is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption. NginX Apache Tomcat is an open source web server that is developed by Apache software foundation. Tomcat Internet Information Services (IIS) is a flexible, general- purpose web server from Microsoft that runs on Windows systems to serve requested HTML pages or files. IIS Caddy is a new web server created with ease of use in mind. It's simple enough to be used as a quick development server and robust enough to be used in production environments. It features an intuitive configuration file, HTTP/2 support, and automatic TLS encryption. Caddy integrates closely with Let's Encrypt, a certificate authority which provides free TLS/SSL certificates and automatically obtains and renews the certificates when needed. In other words, every website that Caddy serves can be automatically served over a secure connection with no additional configuration or action necessary. Caddy
    • 25. Slide29 1 2 3 4 5 6 7 8 Legends Personel Recommendation Possibilities Pick any İ OSI Model. TCP/IP/UDP Common ports Knowlege about different file systems Setting up a Reverse Proxy (Nginx ..) Setting up caching Server(Squid, Nginx, Varnish..) Setting up a load balancer (HAProxy, Nginx ..) Setting up a firewall TLS, STARTTLS, SSL, HTTPS, SCP, SSH, SFTP Postmortem analysis when something bad happens - + Click icon to get information. i Click buttons to see branching.