Software Development: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 9: Line 9:
==Platform as a Service (PaaS)==
==Platform as a Service (PaaS)==


"Platform as a Service" describes an additional level of services layered on top of an infrastructure as a service foundation. These services take care of tasks, so the developer or operator does not have to. For example, widely used middleware such as application servers or databases, which otherwise would have to be added to a base level infrastructure on a case by case basis.
"Platform as a Service" describes an additional level of services layered on top of an [[Software_Development#Infrastructure_as_a_Service_.28IaaS.29|infrastructure as a service]] foundation. These services take care of tasks, so the developer or operator does not have to. For example, widely used middleware such as application servers or databases, which otherwise would have to be added to a base level infrastructure on a case by case basis.


Example: Google app engine.
Example: Google app engine.

Revision as of 19:33, 14 May 2017

Cloud Service Delivery Models

Infrastructure as a Service (IaaS)

The IaaS delivery model lets the user of the service to provision processing, storage, networking and other computing resources on which they can run O/S and applications. The service users do not control the underlying computing infrastructure except select networking configuration or perhaps the physical location of the resources at gross geographical level. Infrastructure as a service is targeted at teams that are actually building out infrastructure.

Example: amazon web service, IBM cloud

Platform as a Service (PaaS)

"Platform as a Service" describes an additional level of services layered on top of an infrastructure as a service foundation. These services take care of tasks, so the developer or operator does not have to. For example, widely used middleware such as application servers or databases, which otherwise would have to be added to a base level infrastructure on a case by case basis.

Example: Google app engine.

"Platform as a Service" are platforms for building and running custom applications, and are targeted at people at the application side.

Software as a Service

DevOps

A collaborative process enabled by automation where application development, QA and Operations teams jointly accelerate delivery of new business application and services. DevOps emphasizes collaboration and cooperation.

CICD

Continous Integration (CI)

Continous Integration is a software development practice that involves the following:

  • Verifies build integrity by checking if the source code can be pulled from repository and built for deployment. The build process may include compilation, packaging and configuration.
  • Runs and validates the unit tests: executes all unit tests created by developers and validates the test results. This step insures that the source code was not broken as a side effect of the commit.
  • Runs and validates the integration tests.
  • Identifies problems and alerts the teams.

In the DevOps culture, CI is mandatory, and it performed automatically by a tool that runs automation scripts to eliminate all human intervention during the CI process.

The CI process requires a source code repository and a continuous integration server, that pulls code from the source repository and runs the build. Developers must check in as often as possible, every time a new piece of functionality that is verified by unit tests that pass is added. The build must be completely automated and must run without human intervention, and it must be fast.

Testing - especially the integration testing - must be done in an environment that is as close to production as possible.

The CI process provides rapid feedback on the state of the project, each unit test or integration test-verified assertion that gets broken by a commit is immediately shared with the entire development team. The process is run every time there's a commit, presumably many times a day. Every member of the team must be able to easily access the build results.

The build process should generate software that can be deployed at any time - a good release candidate.

Continous Deployment (CD)