Difference between revisions of "Main Page"

From Ocean Framework Documentation Wiki
Jump to: navigation, search
Line 57: Line 57:
=== Core Services ===
=== 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]], [[DynamoTable]], [[LoadBalancer]], [[Semaphore]]
:[[Cloud - AWS Metrics and Cloud Management|Cloud]] – [[Instance]], [[DynamoTable]], [[LoadBalancer]], [[Semaphore]]

Revision as of 13:53, 26 April 2017

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, designed by a certified AWS Solutions Architect.

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.

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
  • 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 written in OceanFront
  • Ocean Tool – a 3D client for Ocean
  • Easy set-up
  • Open source



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

API Structure and Conventions

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

Core Services

Core Services

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



Your workstation


Rails ENV VariablesCore Client ApplicationsThe Ocean Tool


Programming Ocean
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