Software Development: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(16 intermediate revisions by the same user not shown)
Line 2: Line 2:


* [[Software Engineering]]
* [[Software Engineering]]
=Cloud Service Delivery Models=


=Overview=
=Overview=
Line 9: Line 7:
With any of the delivery modes below, the provider controls and manages some portion of the technology stack. The customer manages the portion of the technology stack that is not managed by the provider. The benefit is that the customer controls the design of its portion of the stack.
With any of the delivery modes below, the provider controls and manages some portion of the technology stack. The customer manages the portion of the technology stack that is not managed by the provider. The benefit is that the customer controls the design of its portion of the stack.


==External==
Software development makes [[Software_Architecture#Overview|software architecture]] to materialize, and the set of rules and practices that go into software development belong under the larger umbrella of [[Software_Engineering#Software_Development|software engineering]].
 
* NIST definition of Cloud Computing http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf
 
==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. This includes the hardware and the virtualization layers. 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. On the other hand, they control - but they must install and manage - the operating system, the middleware and the application code. Infrastructure as a service is targeted at teams that are 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 [[Software_Development#Infrastructure-as-a-Service_.28IaaS.29|infrastructure as a service]] foundation. These services include operating systems, database, middleware, etc. "Platform as a Service" are platforms for building and running custom applications, and are targeted at application development teams. The customer controls the design of the application, but the management of the platform stack is abstracted away. The customer can focus on functionality design and coding.
 
PaaS is also named "cloud application platform".
 
Example: OpenShift, Google app engine.
 
External:
 
* http://en.wikipedia.org/wiki/Platform_as_a_service
* Salesforce - What is PaaS? http://www.salesforce.com/paas/
* http://www.infoq.com/presentations/Java-in-the-Cloud-PaaS-Platform-in-Comparison
* Netflix Adrian Cockcroft on Architecture for the Cloud http://www.infoq.com/interviews/Adrian-Cockcroft-Netflix
 
==Software-as-a-Service (SaaS)==
 
In this model, the software is the actual service offered on the web (salesforce.com, Intuit Quickbooks). The customer does not need to manage anything, but they also do not control anything, including the design of the application. This works well, unless the customer needs functionality that is not available in the application.
 
=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''.
 
=Blue/Green Deployment=
 
{{Internal|Blue-Green Deployment|Blue-Green Deployment}}


=A/B Deployments=
=A/B Deployments=
Line 76: Line 39:


{{Internal|Code Review|Code Review}}
{{Internal|Code Review|Code Review}}
=Techical Debt=
* https://productcoalition.com/how-great-product-managers-deal-with-technical-debt-453edec3d473


=Simplicity=
=Simplicity=
Line 96: Line 55:
=Consistency=
=Consistency=
* https://medium.com/@jgefroh/why-consistency-is-one-of-the-top-indicators-of-good-code-352ba5d62020
* https://medium.com/@jgefroh/why-consistency-is-one-of-the-top-indicators-of-good-code-352ba5d62020
=Software Development Practices=
* [[Continuous Delivery#Overview|Continuous Delivery]]


=To Process=
=To Process=


* Grady Booch - Building the Enchanted Land https://www.infoq.com/presentations/ai-best-practices. Health of the system: "do you have a regular process of release?" "do you have a sense of architecture?"
* Grady Booch - Building the Enchanted Land https://www.infoq.com/presentations/ai-best-practices. Health of the system: "do you have a regular process of release?" "do you have a sense of architecture?"
 
* [[Feature Toggle]]
<br>
<br>
<center>&#91;[[Software_Engineering#Organizatorium|Next]]]</center>

Latest revision as of 23:14, 2 July 2023

Internal

Overview

With any of the delivery modes below, the provider controls and manages some portion of the technology stack. The customer manages the portion of the technology stack that is not managed by the provider. The benefit is that the customer controls the design of its portion of the stack.

Software development makes software architecture to materialize, and the set of rules and practices that go into software development belong under the larger umbrella of software engineering.

A/B Deployments

A/B deployment with OpenShift

Twelve-Factor Application

Twelve-Factor Application

Semantic Versioning

Semantic Versioning

Good Reads

Developing Applications for the Cloud

Developing Applications for the Cloud

Microservices

Microservices

Infrastructure as Code (IaC)

Infrastructure as Code is an approach to IT systems infrastructure management, where various elements of the underlying hardware infrastructure are represented as programming constructs rather than physical hardware. This approach can be used in combination with automation tools to provide the ability to provision infrastructure in a repeatable and reliable manner.

Code Review

Code Review

Simplicity

Scrum

Domain-Driven Design

Domain-Driven Design

Software Security

Software Security

Consistency

Software Development Practices

To Process