Difference between revisions of "Main Page"

From Ocean Framework Documentation Wiki
Jump to: navigation, search
(Features at a Glance)
(Your workstation)
(41 intermediate revisions by the same user not shown)
Line 3: Line 3:
  
 
Ocean is a synergy of three things:
 
Ocean is a synergy of three things:
* '''A fast, powerful Ruby on Rails programming framework''' where all the difficult problems already have been solved for you: authentication and authorisation, users, roles, groups, aggregated logging, aggressive caching, flooding protection, string translation, asynchronous job handling, and much more: all you need to create your scalable application. Yet Ocean is a thin layer which never gets in your way. You can just get on with the task at hand.
+
* '''A fast, powerful Ruby on Rails programming framework and microservice architecture''' where all the difficult problems already have been solved for you: authentication and authorisation, users, roles, groups, aggregated logging, aggressive caching, flooding protection, string translation, asynchronous job handling, and much more: all you need to create your scalable application. Yet Ocean is a thin layer which never gets in your way. You can just get on with the task at hand.
* '''A complete development, testing, QA and production pipeline''' in the cloud, implementing continuous integration and continuous delivery.
+
* '''Complete development pipelines''' in the cloud, implementing continuous integration and continuous delivery for each service.
* '''A modern, extremely scalable, highly available, resilient, highly secure and autoscaling architecture''' following best practices for the cloud, designed by a certified AWS Solutions Architect.
+
* '''A modern, extremely scalable, highly available, resilient, highly secure and autoscaling architecture''' following best practices for the cloud.
  
Ocean can be set up on AWS in half an hour and is equally suitable for small startups using Ruby on Rails as for large enterprise-level systems. Start small and cheap and grow painlessly in an massively scalable architecture.
+
Ocean can be set up on AWS in half an hour and is equally suitable for small startups using Ruby on Rails as for large enterprise-level systems.
  
 
== Features at a Glance ==
 
== Features at a Glance ==
Line 20: Line 20:
 
* HATEOAS hypertext conventions reduce coupling to a minimum
 
* HATEOAS hypertext conventions reduce coupling to a minimum
 
* CloudFormation: infrastructure as code
 
* CloudFormation: infrastructure as code
 +
* AWS CodeBuild, CodeDeploy, CodePipeline: AWS native DevOps and CI
 
* Ruby on Rails used the right way for massive scaling
 
* Ruby on Rails used the right way for massive scaling
 
* Authentication is based on DynamoDB to handle any number of logins per minute
 
* Authentication is based on DynamoDB to handle any number of logins per minute
Line 30: Line 31:
 
* Complete, test-driven TDD iterative development pipeline
 
* Complete, test-driven TDD iterative development pipeline
 
* Continuous integration
 
* Continuous integration
* Continuous delivery and deployment, rolling in place and/or blue/green
+
* Continuous delivery and/or deployment
 +
* Rolling In Place and/or Blue/Green deployments
 
* Front-end matrix testing
 
* Front-end matrix testing
 
* Multi-variance testing and delivery
 
* Multi-variance testing and delivery
Line 39: Line 41:
 
* Semaphores and automatic operator email notification
 
* Semaphores and automatic operator email notification
 
* Guppies of Disarray (our take on Chaos Monkeys)
 
* Guppies of Disarray (our take on Chaos Monkeys)
* Web based Admin Client written in OceanFront
+
* Web based Admin Client
 
* Ocean Tool – a 3D client for Ocean
 
* Ocean Tool – a 3D client for Ocean
 
* Easy set-up
 
* Easy set-up
Line 47: Line 49:
 
== Ocean ==
 
== Ocean ==
  
;[[Architecture]]
+
=== Architecture ===
:[[Overview]] • [[Distributed Architectures]] • [[The Pipeline]] ([[The Development Environments|Dev]], [[The Continuous Integration Environment| CI]], [[The Staging Environments|QA]], [[The Production Environment| Production]]) • [[HTTP Caching]] • [[Caching in Ocean]] • [[Technologies]]
+
:[[Overview]] • [[Distributed Architectures]] • [[The Pipeline]] ([[The Dev Environment|Dev]], [[The Continuous Integration Environment| CI]], [[The Staging Environments|QA]], [[The Production Environment| Prod]]) • [[HTTP Caching]] • [[Caching in Ocean]] • [[Technologies]]
  
;[[API Structure and Conventions]]
+
=== API Structure and Conventions ===
 
:[[General API Considerations]] • [[Resource Representations]] • [[Resource Collections]] • [[Authentication and Authorisation]] • [[Requests to Services]] • [[Responses from Services]] • [[Partial Table Access: app and context]] • [[Examples]]
 
:[[General API Considerations]] • [[Resource Representations]] • [[Resource Collections]] • [[Authentication and Authorisation]] • [[Requests to Services]] • [[Responses from Services]] • [[Partial Table Access: app and context]] • [[Examples]]
  
;[[Core Services]]
+
=== Core Services ===
 
:[[Auth - Authentication and Authorisation|Auth]] – [[Service]], [[Resource]], [[Right]], [[Role]], [[Group]], [[ApiUser]], [[Authentication]]
 
:[[Auth - Authentication and Authorisation|Auth]] – [[Service]], [[Resource]], [[Right]], [[Role]], [[Group]], [[ApiUser]], [[Authentication]]
:[[Cloud - AWS Metrics and Cloud Management|Cloud]] – [[Instance]], [[AutoScalingGroup]], [[DynamoTable]], [[LoadBalancer]], [[Semaphore]]
+
:[[Cloud - AWS Metrics and Cloud Management|Cloud]] – [[Instance]], [[DynamoTable]], [[LoadBalancer]]
 
:[[CMS - Content Management System|CMS]] – [[Text]], [[Medium]]
 
:[[CMS - Content Management System|CMS]] – [[Text]], [[Medium]]
 
:[[Jobs]] – [[AsyncJob]], [[CronJob]], [[ScheduledJob]]
 
:[[Jobs]] – [[AsyncJob]], [[CronJob]], [[ScheduledJob]]
Line 64: Line 66:
 
;[[Core ApiUsers]] • [[Core Roles]] • [[Core Groups]]
 
;[[Core ApiUsers]] • [[Core Roles]] • [[Core Groups]]
  
;[[Installation]]
+
== Installation ==
  
;[[Operation]]
+
=== AWS ===
:[[Rails ENV Variables]] • [[Instance Creation Commands]] • [[Executing commands in parallel on multiple Chef nodes]] • [[AutoScalingGroup | Elastic Scaling]] • [[Tuning]] • [[Monitoring and Measuring]] • [[Core Client Applications]] • [[The Ocean Tool]]
+
The installation procedure is currently being converted to CloudFormation. Check back in a few weeks.
 +
* [[Installation on AWS]]
  
;[[Programming Ocean]]
+
=== Your workstation ===
:[[Creating a Service]] • [[Creating an SQL based Resource]] • [[Creating a DynamoDB based Resource]] • [[Adding a New Project to the chef-repo]] • [[Adding a New Project to TeamCity]] • [[Routing]] • [[Models]] • [[Views]] • [[Controllers]] • [[Calling Other Services]] • [[Achieving High Scalability using AsyncJobs]] • [[Setting up Ocean CronJobs and ScheduledJobs]] [[Working with Groups, Roles, and Rights]] [[Extending the Aggressive Caching]] • [[Tutorial]]
+
The OS X installation procedure is currently being converted to use Docker containers, rbenv, etc. Check back in a few weeks and you'll be able to install, develop and run Ocean locally using docker-compose.
 +
* [[Dev environment on OS X]]
 +
* [[Amazon Command Line Interface tools setup on OS X]]
 +
* [[Cloning the Ocean Repos]]
  
;[[Watir - Behaviour Testing]]
+
== Operation ==
:[[Watir Tips and Tricks|Tips and Tricks]] • [[Sharing of failed tests screenshots]]
 
  
== OceanFront ==
+
• [[Rails ENV Variables]] • [[Core Client Applications]]  • [[The Ocean Tool]]
  
'''[[OceanFront]]''' is a cross-platform Javascript front end browser HTTP client library supporting all major browsers and platforms. Together, Ocean and OceanFront allow you to write front end code completely independent of browser type and client OS, and back end code completely agnostic of whether it is called by a client browser or another server system. OceanFront is object oriented, widget-based and HTML-less.
+
== Programming ==
  
'''[[OceanFront]]'''
+
;[[Tutorial]]
 +
: How to create your own microservice to manage Notes and their Comments, test it and deploy it.
 +
 
 +
;Specifics (work in progress)
 +
:[[Creating a Service]] • [[Creating an SQL based Resource]] • [[Creating a DynamoDB based Resource]] • [[Routing]] • [[Models]] • [[Views]] • [[Controllers]] • [[Calling Other Services]] • [[Achieving High Scalability using AsyncJobs]] • [[Setting up Ocean CronJobs and ScheduledJobs]] • [[Working with Groups, Roles, and Rights]] • [[Extending the Aggressive Caching]] • [[Tutorial]]

Revision as of 08:37, 13 June 2018

An Ocean system as viewed from the Ocean Tool. video

Ocean is a synergy of three things:

  • A fast, powerful Ruby on Rails programming framework and microservice architecture where all the difficult problems already have been solved for you: authentication and authorisation, users, roles, groups, aggregated logging, aggressive caching, flooding protection, string translation, asynchronous job handling, and much more: all you need to create your scalable application. Yet Ocean is a thin layer which never gets in your way. You can just get on with the task at hand.
  • Complete development pipelines in the cloud, implementing continuous integration and continuous delivery for each service.
  • A modern, extremely scalable, highly available, resilient, highly secure and autoscaling architecture following best practices for the cloud.

Ocean can be set up on AWS in half an hour and is equally suitable for small startups using Ruby on Rails as for large enterprise-level systems.

Features at a Glance

  • Complete foundation on which to base any web or JSON API application
  • Micro service HTTPS architecture in the Amazon cloud
  • Extreme scalability
  • Built for high security, resilience and robustness
  • Aggressive, stringent caching model reduces costs and increases speed
  • REST, JSON, UTF-8
  • HATEOAS hypertext conventions reduce coupling to a minimum
  • CloudFormation: infrastructure as code
  • AWS CodeBuild, CodeDeploy, CodePipeline: AWS native DevOps and CI
  • Ruby on Rails used the right way for massive scaling
  • Authentication is based on DynamoDB to handle any number of logins per minute
  • Atomic level authorisation (per HTTP method)
  • Asynchronous Job queues for high scalability and robustness
  • Aggregated high-speed real-time log for all services
  • Scalable email handling
  • Auto-scaling on load and/or weekly schedule
  • Complete, test-driven TDD iterative development pipeline
  • Continuous integration
  • Continuous delivery and/or deployment
  • Rolling In Place and/or Blue/Green deployments
  • Front-end matrix testing
  • Multi-variance testing and delivery
  • World-wide delivery of media through S3 and CloudFront
  • Multi-language text handling
  • Live metrics are part of the resources (instances, load balancers, etc)
  • Monitoring and automated handling of malfunctioning instances
  • Semaphores and automatic operator email notification
  • Guppies of Disarray (our take on Chaos Monkeys)
  • Web based Admin Client
  • Ocean Tool – a 3D client for Ocean
  • Easy set-up
  • Open source

Ocean

Architecture

OverviewDistributed ArchitecturesThe Pipeline (Dev, CI, QA, Prod) • HTTP CachingCaching in OceanTechnologies

API Structure and Conventions

General API ConsiderationsResource RepresentationsResource CollectionsAuthentication and AuthorisationRequests to ServicesResponses from ServicesPartial Table Access: app and contextExamples

Core Services

AuthService, Resource, Right, Role, Group, ApiUser, Authentication
CloudInstance, DynamoTable, LoadBalancer
CMSText, Medium
JobsAsyncJob, CronJob, ScheduledJob
LogLogExcerpt
MailMail
RolloutApp
Core ApiUsersCore RolesCore Groups

Installation

AWS

The installation procedure is currently being converted to CloudFormation. Check back in a few weeks.

Your workstation

The OS X installation procedure is currently being converted to use Docker containers, rbenv, etc. Check back in a few weeks and you'll be able to install, develop and run Ocean locally using docker-compose.

Operation

Rails ENV VariablesCore Client ApplicationsThe Ocean Tool

Programming

Tutorial
How to create your own microservice to manage Notes and their Comments, test it and deploy it.
Specifics (work in progress)
Creating a ServiceCreating an SQL based ResourceCreating a DynamoDB based ResourceRoutingModelsViewsControllersCalling Other ServicesAchieving High Scalability using AsyncJobsSetting up Ocean CronJobs and ScheduledJobsWorking with Groups, Roles, and RightsExtending the Aggressive CachingTutorial