Software Development
Internal
Cloud Service Delivery Models
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.
External
- 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.
- 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
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.
A/B Deployments
Twelve-Factor Application
Semantic Versioning
Good Reads
Developing Applications for the Cloud
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
Simplicity
- https://thinkingsideways.net/code/2019/03/24/simplicity-over-flexibility.html
- https://www.infoq.com/articles/simplicity-manifesto-development
Scrum
Domain-Driven Design
Software Security
Consistency
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?"