You are on page 1of 19

Ang, Von Errol L.

Tech Topic # 7 September 28, 2019


2014106179 COE132/E01
Technology / Software Stack

I. Full Stack
A Full-stack developer is a technical person who has the potential to work on both front end and
back end of a software application. These developers possess a deep understanding of
technologies used to implement different components and layers in a software product.

Full-stack Developers should have an understanding of the following:

1. Presentation Layer
The layer deals with the front end part of the application, i.e., user interfaces

2. Business Logic Layer


The business logic layer deals with the back end part of the application, for e.g. data
validation, connectivity between the user interface and web.

3. Database Layer
This layer deals with the database connectivity with the application’s front end.

Being a Full-stack developer does not mean you should be master in all these technologies.
Instead, it means a Full-stack development professional should know how to work on the client
as well as server sides and what’s happening in the app when developing it.

Businesses nowadays prefer to invest in Full-stack development services rather than hiring
multiple resources to build a software application.

What happens when a company is too small or can’t afford a development team? That’s where
a Full Stack dev can come in handy. They’re not necessarily experts in both Front End and
Back End, but are more than capable of solving most web development needs.

 Full Stack development covers the full range of web development


 Full Stack devs are not experts in both Front End and Back End development
 Startups and smaller companies have popularized the role
There was an apocryphal story that Facebook only hired Full Stack devs. Whether that was
true, the reasoning behind such a decision was to hire more versatile devs that weren’t
exclusively “Front End” or “Back End.” You could have a development team that could handle
the full spectrum of web development and would know the needs of other team members.
Communication would be improved and, for the company, a more streamlined team.

A growing startup could make great use of a Full Stack developer. This person would know
enough to capably set up a website while also solving some problems on the Back End. A Full
Stack dev knows some HTML, CSS, JavaScript, Python, and PHP along with code libraries and
frameworks to help automate some processes. They’re not experts in all languages, but
understand enough and know where they can turn to for help if something goes wrong.

Full Stack devs are versatile and enjoy wearing multiple hats. Over time, a Full Stack dev could
specialize in either Front or Back End development based on their preferences. If you’re more
visually inclined, you could switch to Front End while more detail-oriented devs may prefer Back
End.
A Full Stack dev understands both Front End and Back End development. They are not experts
in both and the role has become popular as startups need versatile tech talent.
Layers of the full stack:
1. Server, Network, and Hosting Environment.
This involves understanding what can break and why, taking no resource for
granted.
 Appropriate use of the file system, cloud storage, network resources, and an
understanding of data redundancy and availability is necessary.
 How does the application scale given the hardware constraints?
 What about multi-threading and race conditions? Guess what, you won’t see
those on your development machine, but they can and do happen in the real
world.
 Full stack developers can work side by side with DevOps. The system should
provide useful error messages and logging capabilities. DevOps will see the
messages before you will, so make them count.
2. Data Modeling
If the data model is flawed, the business logic and higher layers start to need
strange (ugly) code to compensate for corner cases the data model doesn’t
cover.
 Full stack developers know how to create a reasonably normalized relational
model, complete with foreign keys, indexes, views, lookup tables, etc.
 Full stack developers are familiar with the concept of non-relational data stores
and understand where they shine over relational data stores.
3. Business Logic
 The heart of the value the application provides.
 Solid object oriented skills are needed here.
 Frameworks might be needed here as well.
4. API layer / Action Layer / MVC
 How the outside world operates against the business logic and data model.
 Frameworks at this level should be used heavily.
 Full stack developers have the ability to write clear, consistent, simple to use
interfaces. The heights to which some APIs are convoluted repel me.

5. User Interface

Full stack developers: a) understand how to create a readable layout, or b)
acknowledge they need help from artists and graphic designers. Either way,
implementing a good visual design is key.
 Can include mastery of HTML5 / CSS.
 JavaScript is the up and coming language of the future and lots of exciting work
is being done in the JavaScript world (node, backbone, knockout…)
6. User Experience

Full stack developers appreciate that users just want things to work.

A good system doesn’t give its users carpal tunnel syndrome or sore eyes. A full
stack developer can step back and look at a process that needs 8 clicks and 3
steps, and get it down to one click.
 Full stack developers write useful error messages. If something breaks, be
apologetic about it. Sometimes programmers inadvertently write error messages
that can make people feel stupid.
7. Understanding what the customer and the business need.
 Now we are blurring into the line of architect, but that is too much of a hands off
role.
 Full stack developers have a grasp of what is going on in the field when the
customer uses the software. They also have a grasp of the business.

II. Front End

Front end developers build the visible parts of websites that users see and interact with in their
web browsers.
As the demand for digital solutions is increasing at a rapid pace, front end technologies have also
become more important in product development. Rather than focusing on only product features,
there is a need to consider the user experience while analyzing the success of a product.

Front end technologies are used for managing the user-facing components of the software product.
A Full-stack developer should know how the software application should look like and what should
be the flow of an app.

Front End Languages

 HTML (HyperText Markup Language)

It is the backbone of the Web. Every website you visit is built with HTML. It takes care of all the
structure and content. HTML5 is the current iteration of HTML on the Web, although sites built
with older versions still run fine in your browser.
The primary purpose of HTML in a web document is to structure the data into something that the
browser can read from and then render the read data into a visual format for a user.

 CSS (Cascading Style Sheets)

It is what controls the way the HTML looks on the page. CSS sets the colors, fonts, background
images, and even the way the page is laid out (you can use CSS to arrange the HTML elements
on a page however you want, even if it’s different than the order they’re arranged in the HTML
file). CSS3 is the current iteration of CSS on the Web, and adds a ton of features for things like
basic interactivity and animations.
Cascading Style Sheets are an extremely powerful and effective tool for adding client-side styling
and functionality like image rollovers, once only accomplished using JavaScript. This can be very
useful as some users do not enable JavaScript in their browsers by default.

 JavaScripts

This lets you add in interactivity, more complex animations, and even makes it possible to build
fully featured Web applications.

JavaScript is a client-side scripting language that enables developers to deliver a “rich” user
experience. This “rich” experience is based on many elements aside from client-side scripting,
such as clear and easy navigation, but the term has become hitched to the concept of dynamic
mouse-over effects, smooth transitions, and AJAX interaction. JQuery is a powerful JavaScript
API library that allows you to create complex JavaScript effects with very little effort.
Now, Front End devs can manipulate web elements without having to wait for a site to load
(Imagine waiting for Twitter to refresh every time you updated your feed.) Developers also use
Front End frameworks to enhance or simplify JavaScript tasks. The AngularJS framework, for
example, lets developers build single-page web apps efficiently. jQuery simplifies tasks and AJAX
adds XML, a markup language, to JavaScript to enable sites to update without refreshing.

In short, front end developers use HTML, CSS, and JavaScript to code up websites. They’re the
ones who take the design and create a functioning website from it. Some sites are only built with
HTML, CSS, and JavaScript. Other sites, however, have more code hidden away in the back end
of the site, to augment or enhance the front end of the site.

 Mobile Device Design Optimization

Most web searches are now, and have been for years, conducted on mobile devices. While web
development for desktop platforms will continue to thrive, it has become a requirement to create
an alternate layout that is optimized for small screens and touch based user input.

 Client-Side vs Server-Side
By design, and for security reasons, the client-side languages like JavaScript are not able to
access the server and perform server-related tasks. This is why there are server-side languages
like PHP and client-side languages like JavaScript.

 Bootstrap

Bootstrap is an open-source CSS framework which can manage the creation of responsive
websites and applications. Using CSS and Javascript based design templates, Bootstrap saves
developers from a lot of coding efforts.

 AngularJS

AngularJS is a javascript based open source framework that can address several challenges
encountered in building single-page applications.

 React
React is a javascript library used for developing user interfaces. It can enable high-performance
rendering on both the server’s and the client’s side.

Front End developer?

 Helps create the user experience within a browser


 Requires creative, technical, and communication skills
 Employment and salary projections are promising

A Front End developer (dev) works with designers and Back End devs to create a website. Front
End devs use programming languages and frameworks to create what a user experiences in a
browser.

Everything a Front End dev does ensures a great user experience. All the neat flourishes or
seamless page loading is the result of a Front End dev. While a developer may care about a site’s
appearance, their job is first and foremost about performance. Front End devs need to be both
creative and technical because they work with both web designers and Back End devs.

Web devs can indeed be designers, but the two are distinct roles: a web developer brings a
designer’s creation to life through various mockups and frameworks. Front End devs don’t create
graphics or design elements, but they do create the interface and the different dynamic elements
to create an immersive experience.

On our homepage, the graphic enlarges and the text shrinks when you hover over a button while
using a desktop computer. It’s a subtle stylistic flourish created by a Front End dev.

Another example would be how a site looks on a desktop or on a smartphone. Sites have to be
responsive because a user might visit from a desktop, smartphone, or tablet. A good website
tailors its user experience to best fit the device’s display and it’s the job of a Front End dev to
implement this design.

A Front End dev is vital to a user’s web experience. They work as a part of a larger team to create
what a user sees and interacts with within a browser. Front End devs use HTML5, CSS,
JavaScript, JavaScript frameworks, and code libraries to achieve this.

III. Back End


Backend is the part of a software application that you cannot see. The backend of app deals with
organizing and storing of data and ensures that everything runs robustly on the client side.
Backend is responsible for interacting with the front end to receive and send information to be
displayed on the web app. Whether you fill a form on the app, request to buy an item or save an
item to the card, the app’s front end sends a request to the server which fetches information and
displays it.

Back End Languages


 Ruby, Python, and PHP are popular Back End languages
 Back End languages are used to fulfill requests created by the user
 Back End languages retrieve information from a database stored in a server that’s then
processed through an application

A Front End needs a Back End otherwise it would be lines of inactive code. Front End languages
communicate requests to Back End languages. Every website has a server, database, and other
applications that interact with the Front End through code created by a Back End dev.
Amazon is a good example of Back End development in action. You go on Amazon and search
for a new shirt. A Back End dev uses server-side language to pull all the information about shirts
from a database. That information is then processed in an application and returned to the user
through Front End language. In English: you’ll get results for thousands of shirts. If you filter out
results based on size, the process repeats.
Ruby, Python, and PHP are among the three most popular Back End languages. There are other
server-side languages along with database management languages like SQL. While it’s easy to
assume that Back End languages are more difficult to learn because of its technical nature, that’s
not the case.
 Ruby
Ruby is a general-purpose, object-oriented programming language. That means it’s used widely
and treats everything as an object. The philosophy behind Ruby, which emphasizes the human
and favors expressiveness, has made it incredibly popular among developers and startups. Ruby
on Rails is an incredibly popular framework used to help develop websites and applications by
streamlining the development process. Avi Flombaum, our co-founder and dean, has written
extensively about Ruby and why he loves the programming language.
 Python
Python is a high level and interpreted a programming language that can be used to create web
apps and connect to database systems. As compared to other programming languages, it allows
developers to write code with fewer lines. Also, the syntax is somewhat similar to the English
language, which is easier to understand.
Python is used to code server-side logic and many popular websites, including Reddit and
Instagram, are built upon Python. The language is easily scalable with frameworks like Django.
Python has become increasingly popular due to its applications in machine learning and data
science.

 PHP
PHP is a general-purpose programming language used for the development of websites and web
apps. Mainly focused on server-side scripting, PHP allows developers to do what other CGI
programs can do. For example, generating dynamic page content, collecting form data or sending
and receiving cookies. It’s open source and free, which means it’s a versatile tool to create
dynamic websites.

 Java
Java is an object-oriented language that can work on multiple platforms including Windows, Linux,
MAC and more. The language can be used for building mobile apps, web apps, desktop apps,
games, database connection, web servers, and application servers.

 .NET
.NET is an open-source cross-platform used by developers for building web apps, mobile apps,
desktop apps, microservices, gaming apps, and IoT apps. A developer should understand C#,
Visual Basic or F# programming languages to build .NET apps.

 NodeJS
NodeJS is a javascript runtime, designed to create scalable network applications. It is an open
source server environment that can run on different platforms such as Linux, Mac OS X, Linux,
Unix and more.

 Go
Go is an open source Google’s general-purpose programming language used for building efficient
and simple to use software applications.

 The Web Server


The “back-end” of a website refers to the server, server-side scripts, databases, and machine
configuration settings. When people speak of a “server” they are often using the word to refer to
a type of physical machine, but this is not correct usage of the word. A “server” is actually a
software concept – not a hardware one. There are machines that have been optimized to perform
well while running server applications, but the “server” itself is software. There are many web
servers in use today with the open source application Apache being the most popular. Another
popular open source web server application is NGINX, but Apache will be covered in this article.
 Server-Side Scripting Languages
There are many popular back end scripting languages like Perl, Ruby, and PHP that help to
provide dynamic content to websites. One of the most popular in the industry is PHP and will be
the back-end scripting language this article will cover as it is used on 83.1% of web servers as of
the writing of this article.

 Databases & Data Storage


Another key component to the back-end is the storage and retrieval of data. There are markup
style formats like XML and JSON that allow you to store and organize data in text files. With the
correct functions in PHP you can access the data in those text files much like you would records
in a database, however, databases are much more efficient when frequent requests for large
amounts of data will be necessary.

Because databases are optimized for frequent data storage and access, they are the preferred
method for providing dynamic web content. Databases also have the advantage of having many
encryption and access control features that make them more secure for storing sensitive
information. The Structured Query Language (SQL) is also incredibly powerful when leveraging
the built-in functions. The database that will be covered in this article is MySQL, though
PostgreSQL is another popular open source alternative.

Back End developer

A Back End dev uses a set of programming languages to bring the Front End language of a
developer to life. While a Front End dev creates the user experience within a browser, the Back
End dev is creating the logic that makes those requests a reality. In some ways, a Back End dev
is creating the brains and logic of the website.

A Back End dev uses Ruby, Python, PHP, SQL, and other programming languages to develop
and maintain the Back End logic of a website.

Back End devs can be more technical and organized, but they are still a part of a larger team.
While they need to know how to create the logic that efficiently pulls the data to fulfil a request,
they also need to communicate their needs and potential limitations to the Front End dev. They
are also responsible for maintaining this logic system. Back End devs are working with databases,
servers, an application programming interface (API) that creates a structure for component
interaction and the integration of all these processes.

Back End devs are using programming languages such as Ruby, Python, PHP, Java, Microsoft’s
.Net framework, and data management tools like SQL and MySQL to satisfy a user’s request. In
the previous example with Amazon, a user’s request starts a chain of both seen and unseen
events. A user enters a search term that then leads to thousands of results all in under a second.
The user experiences everything a Front End dev created while enjoying the benefits of rapid
information retrieval using logic created by a Back End dev. If a user clicks a button to go to a
new page, or if a website has an infinite scroll feature, the Back End dev is responsible for making
sure the user gets to the right page.
A Basic Full-Stack Document Request Sequence
The following are the bare bones steps for providing dynamic content to the client:

 Client requests a PHP document from the server (the HTML is within this file)
 PHP pulls the blog entries from the database.
 PHP inserts the records into your HTML code.
 PHP then serves the PHP document to the client.
 Client receives the PHP document.
 Client’s browser loads the HTML markup and establishes the Document Object Model (DOM)
 Client’s browser runs any client-side scripts (CSS, JavaScript, JQuery)
 The website request process is complete
IV. DevOps
DevOps word is a combination of two words, “development” and “operations.” It is a set of software
development practices that collaborate development and operations team to deploy code to
production faster in a repeatable way. DevOps is not a tool or a team, it is the process or a
methodology of using various tools to solve the problems between Developers and Operations
team, hence the term “Dev-Ops”

DevOps is a word that is used to describe a set of modern IT practices which seek to more closely
bring together software developers and operations staff to work on the same project in a more
collaborative manner. The desire is that by breaking down barriers which have traditionally existed
between these two sides of the IT department, organizations can reduce the time and friction
involved in deploying new versions of software. This effort will ideally lead to shorter development
cycles which ideally may save time and money,and give the organization a competitive edge
against others with longer, more traditional development cycles.

The two primary antecedents of DevOps are:


 Enterprise systems management (ESM). Many of the people involved in the initial
definition of DevOps were system administrators. These operations experts brought key
ESM best practices to DevOps, including configuration management, system monitoring,
automated provisioning, and the toolchain approach.
 Agile development. One observer notes, “DevOps can be interpreted as an outgrowth of
Agile—agile software development prescribes close collaboration of customers, product
management, developers, and (sometimes) QA to fill in the gaps and rapidly iterate
towards a better product ... [DevOps acknowledges that] service delivery and how the app
and systems interact are a fundamental part of the value proposition to the client as well,
and so the product team needs to include those concerns as a top-level item. From this
perspective, DevOps is simply extending Agile principles beyond the boundaries of the
code to the entire delivered service.”

What Problems Led to the Creation of DevOps?


Developers and system administrators don’t always see eye to eye on a lot of things, but they do
agree that their customers on the business side of the house frequently pull them in different
directions. On the one hand, business users demand change—new features, new services, new
revenue streams—as fast as possible. At the same time, they also want a system that is stable
and free from outages and interruptions. That creates a problem where companies feel like they
have to choose between delivering changes quickly and dealing with an unstable production
environment or maintaining a stable but stale environment.

Not surprisingly, neither choice is acceptable to enterprise executives. And, more important,
neither allows a business to provide the best solutions it can to its customers.

Developers are willing to push out software faster and faster—after all, that’s what they are
typically hired to accomplish. Operations, on the other hand, knows that rapid-fire changes without
proper safeguards could destabilize the system, which goes directly against their charter.

DevOps was created to resolve this dilemma by integrating everyone associated with software
development and deployment—business users, developers, test engineers, security engineers,
system administrators, and sometimes others—into a single, highly automated workflow with a
shared focus: rapid delivery of high-quality software that meets all user requirements while
maintaining the integrity and stability of the entire system.
How do these disparate groups join forces? By subscribing to a common set of principles that
transcends traditional discipline boundaries and roles, for example:

 Set expectations and priorities and the fundamental beliefs that guide them.

 Collaborate both within and between teams on problem solving.

 Automate common and repetitive processes to free up time for higher-level work.

 Integrate feedback into the work, measuring everything that is moved into production.

 Share the data with everyone involved to foster a more effective culture of working well
together across different skills and specialized knowledge.

This technique allows developers to engage in the entire development process of a software
application from design to development. It helps in improving the speed of organizations to deliver
digital solutions and applications. As a Full-stack developer, an individual should have an in-depth
understanding of DevOps lifecycle and how it is different from the traditional development process.

Now let us see how DevOps takes care of the challenges faced by Development and Operations.
Below table describes how DevOps addresses Dev Challenges.

Going further, below table describes how DevOps addresses Ops Challenges.
Life cycle of DevOps
A lot of stages help in making DevOps what it is today.

It is a continuous process – continuous development, testing, integration, deployment and


monitoring. Let me explain this with an example.
Instagram is a widely used application all over the world. For it to work the way it does, there is
huge team behind the scenes continually developing, testing and releasing features to it.
The developer plans and builds the code for the application which undergoes testing using test
suites, if test suites are successful the code is sent to production.
In the production environment, the monitoring tool keeps a log of bugs and feature requests by
users. For instance, Instagram has added new features like Instagram Stories and IGTV which
were not a part of the Instagram application before.
There was also a bug which crept on to the application which switched the feed to a horizontal
view and everyone went bonkers. This is now fixed, but, how do you think Developers get to know
about these bugs?
It is continuous monitoring that keeps a check on these bugs and feature requests. These
feedbacks are then sent to developers who make the changes and again push the code in the
DevOps Lifecycle.
Therefore, from the above example you can see that work is done continuously on the application,
and the development never stops!
The process of adding new features and fixing bugs continuously to improve the application, in
the shortest time possible is called Devops Lifecycle.

 Continuous Development

The developer plans and builds the code and uploads it on to a version control system like Git
which contains the source code. Even after the final release, there are feedbacks which the
developer needs to incorporate in the application. Therefore, this continuous process of improving
the application by the Developer is called Continuous Development.

 Continuous Testing

After the code is uploaded on to the source code platform, it undergoes testing with the help of
test codes. Each time the source code undergoes changes, the code also undergoes testing in a
continuous fashion before passing on to production.
 Continuous Integration

When one stage in the DevOps lifecycle is completed, the application code has to move on to the
next one. This happens with the help of integration tools. The developmental practice of
continuously harmonizing the code from one stage to the next with the help of tools is called
continuous integration.

 Continuous Deployment

Each addition of feature in the application, might need some modifications in the application
environment. This is called Configuration Management. To achieve this, we use several
deployment tools. The process of continuously changing the application environment based on
addition of features is called Continuous Deployment.

 Continuous Monitoring

Even after planning and testing, bugs might find their way to production. To keep a track of these
bugs or any other inappropriate system behavior or even keeping a track on feature requests, the
monitoring tool continuously keeps a check as and when the application undergoes updates.
Behind every successful stage, there are a lot of tools that help in smooth working of DevOps.
Here are a few important ones:
Open-source software development, particularly its core tenets of collaboration and
transparency, has always been an integral part of DevOps. This is one of the reasons that
DevOps tends to be an easier adjustment for developers, who tend to have experience with
open-source software and its concepts and technologies, than for IT operations professionals
and teams, who might see DevOps as a dramatic departure from stability through command
and control.

Enterprise DevOps users have also routinely reported that the modularity and componentization
of open-source software is a good fit for DevOps, which tends to involve a broader array of tools
and technologies.

We often say that DevOps should not be thought of as a toolchain, but rather a tool chest that
contains a broad array of software—automation tools, clouds, languages and frameworks,
testing tools, containers, databases, etc.—to help make DevOps happen. Open-source software
is built to work and integrate with other software components and thus helps organizations take
advantage of the best tools for the job while mitigating complexity.

This isn't to say open-source software is necessarily a requirement of DevOps, but as our
conversations and research indicate, open-source software does seem to serve as a catalyst for
DevOps implementations. In a survey project that 451 Research conducted in 2016, researcher
Donnie Berkholz and I saw evidence that, indeed, the level of open-source adoption within a
DevOps implementation does correlate to DevOps success.

Now take a look at the below DevOps diagram with various DevOps Tools closely and try to
decode it.
Companies implementing the best practices of DevOps have demonstrated that they are more
effective and flexible in implementing as well as designing IT tools and practices, resulting in
higher revenue generation at a lower cost. For traditional organizations looking to embrace new
inventions such as bitcoin wallet, the adoption of DevOps tools provides consistency, quality and
efficiency.
Open source DevOps tools are used as a way to streamline the process of development and
deployment. The benefit of using open source software is that it is built with enhanced
collaboration which can drive innovation and enhance flexibility in handling transforming markets
and needs. Visibility into the code helps enhance overall quality and security, and also helps
companies prevent vendor lock-in from proprietary vendors.
Open Source DevOps Tools to Know

1. Git

Git is one of the most popular DevOps tools, widely used across the software industry. It’s a
distributed SCM (source code management) tool, loved by remote teams and open source
contributors. Git allows you to track the progress of your development work. You can save
different versions of your source code and return to a previous version when necessary. It’s also
great for experimenting, as you can create separate branches and merge new features only when
they’re ready to go.
To integrate Git with your DevOps workflow, you also need to host repositories where your team
members can push their work. Currently, the two best online Git repo hosting services are GitHub
and Bitbucket. GitHub is more well-known, but Bitbucket comes with free unlimited private repos
for small teams (up to five team members). With GitHub, you get access only to public repos for
free—which is still a great solution for many projects.
Both GitHub and Bitbucket have fantastic integrations. For example, you can integrate them with
Slack, so everyone on your team gets notified whenever someone makes a new commit.

2. Docker

Another important tool is the docker. Docker makes the distribution development possible through
‘containers’ and automates the deployment of the apps. To make the application portable and
more secure, docker isolates the apps into separate containers. The docker apps are OS and
platform independent.
Docker has been the number one container platform since its launch in 2013 and continues to
improve. It’s also thought of as one of the most important DevOps tools out there. Docker has
made containerization popular in the tech world, mainly because it makes distributed
development possible and automates the deployment of your apps. It isolates applications into
separate containers, so they become portable and more secure. Docker apps are also OS and
platform independent. You can use Docker containers instead of virtual machines such as
VirtualBox.
What I like the most about Docker is that you don’t have to worry about dependency
management. You can package all dependencies within the app’s container and ship the whole
thing as an independent unit. Then, you can run the app on any machine or platform without a
headache.
Docker integrates with Jenkins and Bamboo, too. If you use it together with one of these
automation servers, you can further improve your delivery workflow. Besides, Docker is also
great for cloud computing. In recent years, all major cloud providers such as AWS and Google
Cloud added support for Docker. So, if you are planning a cloud migration, Docker can ease the
process for you.

3. Selenium

This is a portable software testing framework for web applications. It is an open source tool and
runs in most of the platforms like JAVA, Python, Ruby, Perl, Php, Javascript etc. Selenium is used
for continuous testing.

4. Maven

From project structure to building steps, Maven is the tool that provides us with guidelines which
when followed helps us get our job done faster with minimal configurations. It compiles the source
code, runs tests, packages the results into JARs, WARs, etc. and uploads the packages into
remote repos.

5. Jenkins

It is a continuous integration server that can be used for testing. As a developer, it helps in finding
and killing the bugs in the code. Jenkins offers a huge plugin ecosystem of about 1000 plugins
which means, it can integrate with almost all the DevOps tools.

6. Nagios

This is another tool with a rich plugin system, with free and open source monitoring tools that
helps in finding and fixing the problems in the IT infrastructure before they affect the sensitive
business projects.Nagios is a well-established monitoring solution that is highly efficient due to
the large contributor community creating plugins for it. Nagios has the capability to deliver results
in different visual reports and representations.
Nagios is one of the most popular free and open source DevOps monitoring tools. It allows you
to monitor your infrastructure so that you can find and fix problems. With Nagios, you can keep
records of events, outages, and failures. You can also keep an eye on trends with the help of
Nagios’ graphs and reports. This way, you can forecast outages and errors and detect security
threats.
Although there are many DevOps tools for infrastructure monitoring, Nagios stands out due to
its rich plugin ecosystem. As Nagios has been around for a while (since 2002), there’s a vast
community around it. Besides plugins, they also make add-ons, tutorials, translations, and other
goodies—all for free.
Nagios offers four open source monitoring solutions:
 Nagios Core
 Nagios XI
 Nagios Log Server
 Nagios Fusion
Nagios Core is a command line tool, with all the basic functionalities. You can also opt
for Nagios XI that comes with a web-based GUI and monitoring wizard. Nagios writes a
handy comparison of their capabilities.
Nagios Log Server lets you search log data and set up alerts about potential threats.
And, Nagios Fusion allows you to monitor multiple networks at the same time.
On the whole, Nagios provides DevOps teams with an infrastructure monitoring solution.
However, it can take a while to set it up and make it compatible with your environment.

7. Ansible

Ansible is a configuration management tool, similar to Puppet and Chef. You can use it to
configure your infrastructure and automate deployment. Its main selling points compared to
other similar DevOps tools are simplicity and ease of use. Ansible follows the same
Infrastructure As Code (IAC) approach as Puppet. However, it uses the super simple YAML
syntax. With Ansible, you can define tasks in YAML, while Puppet has its own declarative
language.
Agentless architecture is another frequently mentioned feature of Ansible. As no daemons or
agents run in the background, Ansible is a secure and lightweight solution for configuration
management automation. Similar to Puppet, Ansible also has several modules.
If you want to better understand how Ansible fits into the DevOps workflow take a look at this
postby the Red Hat Blog. It shows how to use Ansible for environment provisioning and
application deployment within a Jenkins pipeline.
8. Bamboo
Bamboo is Atlassian’s CI/CD server solution that has many similar features to Jenkins. Both are
popular DevOps tools that allow you to automate your delivery pipeline, from builds to
deployment. However, while Jenkins is open source, Bamboo comes with a price tag. So, here’s
the eternal question: is it worth choosing proprietary software if there’s a free alternative? It
depends on your budget and goals.
Bamboo has many pre-built functionalities that you have to set up manually in Jenkins. This is
also the reason why Bamboo has fewer plugins (around 100 compared to Jenkins’ 1000+). In
fact, you don’t need that many plugins with Bamboo, as it does many things out-of-the-box.
Bamboo seamlessly integrates with other Atlassian products such as Jira and Bitbucket. You also
have access to built-in Git and Mercurial branching workflows and test environments. All in all,
Bamboo can save you a lot of configuration time. It also comes with a more intuitive UI with
tooltips, auto-completion, and other handy features.

9. Puppet

It is a configuration management platform which allows us to manage the infrastructure as a code.


The delivery of code is faster and more secure as it automates infrastructure management.
Puppet also provides open source tools for minor projects.

Puppet Enterprise is a cross-platform configuration management platform. It allows you to


manage your infrastructure as code. As it automates infrastructure management, you can
deliver software faster and more securely. Puppet also provides developers with an open-
source tool for smaller projects. However, if you are dealing with a larger infrastructure, you may
find value in Puppet Enterprise’s extra features, such as:
 Real-time reports
 Role-based access control
 Node management
With Puppet Enterprise, you can manage multiple teams and thousands of resources. It
automatically understands relationships within your infrastructure. It deals with dependencies
and handles failures smartly. When it encounters a failed configuration, it skips all the
dependent configurations as well. The best thing about Puppet is that it has more than 5,000
modules and integrates with many popular DevOps tools.
10. SaltStack
SaltStack is the paid enterprise version of Salt. Salt is a highly flexible, powerful and intelligent
open source software for event-driven orchestration, cloud control, configuration automation and
remote execution. It helps DevOps companies by orchestrating the effective movement of code
into production and keeping the complex infrastructures tuned for optimal application delivery and
business service. Saltstack orchestrates the value chain of DevOps and helps to deploy as well
as configure dynamic applications.

11. Kubernetes

This year, everyone is talking about Kubernetes. It’s a container orchestration platform that
takes containerization to the next level. It works well with Docker or any of its alternatives.
Kubernetes is still very new; its first release came out in 2015. It was founded by a couple of
Google engineers who wanted to find a solution to manage containers at scale. With
Kubernetes, you can group your containers into logical units.
You may not need a container orchestration platform if you have just a few containers.
However, it’s the next logical step when you reach a certain level of complexity and need to
scale your resources. Kubernetes allows you to automate the process of managing hundreds of
containers.
With Kubernetes, you don’t have to tie your containerized apps to a single machine. Instead,
you can deploy it to a cluster of computers. Kubernetes automates the distribution and
scheduling of containers across the whole cluster.
A Kubernetes cluster consists of one master and several worker nodes. The master node
implements your pre-defined rules and deploys the containers to the worker nodes. Kubernetes
pays attention to everything. For instance, it notices when a worker node is down and
redistributes the containers whenever it’s necessary.
12. Raygun

Raygun is a world-class error monitoring and crash reporting platform. Application performance
monitoring (APM) is its most recent product. Raygun’s DevOps tool helps you diagnose
performance issues and tracking them back to the exact line of code, function, or API call. The
APM tool also fits well with Raygun’s error management workflow. For example, it automatically
identifies your highest priority problems and creates issues for you.
Raygun APM can help you make the most out of other DevOps tools, as you are always notified
about the problems. Since it automatically links errors back to the source code, Raygun brings
Development and Operations together by providing one source of truth for the whole team the
cause of errors and performance problems.
13. Chef
Chef makes it possible to manage both traditional and cloud environments with one single tool.
While maintaining high availability, Chef promises to accelerate cloud adoption. The chef
development kit provides you with the tools you need to develop as well as test your infrastructure
automation code from your workstation locally prior to deploying changes into production. On the
Chef site, many technical resources and a lot of documentation is available including various
resources designed to help organizations transition to DevOps and scale their implementations
of DevOps.
14. Hudson

Hudson is a tool for managing and monitoring continuous testing and integration. The key
features of Hudson include support for various systems for management of source code,
application servers, code analysis tools, testing frameworks, build tools, real-time notifications of
test failures, change set support and easy process for installation and configuration. A huge
library of plugins is present that further extend its capabilities.

15. Behat

Behat is a php framework for auto testing the expectations laid by your business. It is a
behavior-driven, open source development framework for php. This tool supports you in
providing software that matters via test automation, deliberate discovery, and continuous
communication.

16. Watir

Watir is a web application cross-platform open source testing tool. It is the most flexible and
reliable tool of Ruby libraries for automating the web browsers. Just like a human being, this tool
communicates with the browser so it validates text, fills out forms and clicks links.

17. Supergiant

Built on top of Kubernetes, Supergiant is an open source platform for container management. It
is utilized for Kubernetes deployment on multiple clouds in a matter of minutes. The Supergiant
API is used for streamlining production deployment. With the help of the packing algorithm of
Supergiant, hardware costs can be lowered and the hardware you require with computed
efficiency can only be utilized.

References
https://hackernoon.com/what-is-a-full-stack-developer-a62b705b8909
https://skillcrush.com/2017/02/27/front-end-back-end-full-stack/#full
https://www.mad-hax.com/2018/01/23/introduction-to-full-stack-web-development/
https://flatironschool.com/blog/front-end-vs-back-end-development/#
https://intellipaat.com/blog/what-is-devops/
https://www.edureka.co/blog/devops-tutorial
https://opensource.com/resources/devops
https://www.laurencegellert.com/2012/08/what-is-a-full-stack-developer/
https://devops.com/most-popular-open-source-devops-tools/
https://raygun.com/blog/best-devops-tools/

You might also like