Main Page

From Ocean Framework Documentation Wiki
Jump to: navigation, search

Ocean

Overview.jpg

Ocean is a synergy of three things:

  • A lightweight Rails programming framework where the difficult problems already have been solved for you.
  • A modern microservice architecture scaling to enterprise levels according to cloud best practices.
  • A complete development and production environment with pipelines and CI/CD.

Ocean can be set up locally or on AWS in a few minutes and is equally suitable for startups as for large enterprise-level systems.

Features at a Glance

  • Complete foundation on which to base any web or JSON API application
  • Microservice 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
  • Scalable email handling
  • Complete, test-driven TDD iterative development pipeline
  • Continuous integration
  • Continuous delivery and/or deployment
  • Rolling In Place and/or Blue/Green deployments
  • 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)
  • Automatic operator email notification
  • Web based Admin Client
  • Ocean Tool – a 3D client for Ocean
  • Easy set-up: Docker, AWS ECS Fargate, AWS EKS Fargate (when available)
  • Open source

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, LogExcerpt
CMSText, Medium
JobsAsyncJob, CronJob, ScheduledJob
MailMail
RolloutApp
Core ApiUsersCore RolesCore Groups

Installation

AWS

To install Ocean on AWS, simply follow the instructions in the cfn-templates repo.

Your workstation

Ocean can be run, fully functional, on your local computer under Docker and Docker Compose. Simply follow the instructions in the ocean repo.

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