Skip to content

Latest commit

 

History

History
81 lines (51 loc) · 6.15 KB

README.md

File metadata and controls

81 lines (51 loc) · 6.15 KB

LMTD Phase 1B - Project One - Microservice Application

It has become vital for engineers of all backgrounds to immerse themselves in the many different stages of the Software Delivery Lifecycle as well as the various software architecture patterns in adoption today. With the rapid technical innovation powered by the accessibility of Cloud Computing, modern engineers have had to adapt continuously to new workflows, programming paradigms, and changing application requirements. Due to this acceleration of computing availability there have been a number of diverse systems and architectural patterns in production that have gained more attention in the last few years. One of the most interesting architectural patterns discussed in recent times is the Microservice Architecture.

About Microservices

Microservice Architecture refers to the creation of Microservices, applications that handle specific business logic functions (authentication, logging, etc) independently of one another. The Microservice architecture structures applications in loosely coupled, autonomous services that communicate over a network to fulfill one specific and well-defined responsibility and function.

Microservices communicate via well defined APIs - usually HTTP. Each Microservice acts as a self-contained piece of business functionality which vastly differs from traditional monolithic application architecture where all business functionality is layered.

Microservices vs Monoliths

The Characteristics of Microservices

  • Fine granularity – microservices are small in size, organized around fine-grained business capabilities, and so their footprint is much smaller than services in SOA.

  • Independence – microservices are developed and organized in order to be independent from any other parts of the system, and thus you can develop them, test them out and deploy them separately. Specialization – microservices are designed to answer one, specific problem / business capability. If a microservice grows over time, it should be broken into smaller services.

  • API oriented – microservices don’t share any of their code with other services, they communicate with well-defined APIs.

  • Point scaling – with microservices, it is possible to scale up only the microservice that supports the function with resource constraints, which gives additional resource and cost optimization.

  • Technology-agnostics – microservices are designed to communicate over a network. To fulfil this goal, they often use technology agnostic protocols such as HTTP or a message bus.

  • Openness for technologies – thanks to their independence, microservices can be implemented using different programming languages, databases, hardware and software environments, depending on what fits best. Different microservices can be built upon different technologies, but a single microservices won’t be a patchwork of programming languages.

About Our Project - devBops

DevBops is the next big platform for aspiring technologists. Users are able to RSVP to events related to technology happening across the world, and share pieces of writing relevant to technical topics of all varieties.

You all will be a part of the engineering team, in charge of the direction of this project from start to finish.

Project Image

Project Tasks

Team 1: Frontend Web App

Your responsibility is creating a UI/UX wireframe and leading development of our client-side application allowing for users to register/login to the platform and interact with the various services through the API Gateway.

Team 2: API Gateway

Your responsibility is to create an API Gateway which securely connects any requests made from the client-side of the application to the three Service APIs and vice-versa.

Team 3: Services / REST APIs

Your responsibility is to lead the backend development of our application’s Microservices by working with the QA and Data Management teams to ensure that each service works independently with its own database and REST API.

Team 4A: QA

Your responsibility is to lead the test-driven-development and production testing of our application by working with the Services Team and the Data team.

Team 4B: Data Management

Your responsibility is to build and maintain efficient functionality of each Microservice Database by working with the QA and Service team.

Team 5: Technical Project Management

Your responsibilities are to ensure the project is highly documented (comments, READMEs, API Documentation), organizing the team Kanban board and tracking issues, and leading the SCRUM planning alongside representatives from all the other teams.

Milestones

  • Project Management via Trello

  • AGILE Development (sprint planning, standups, retrospectives)

  • Wireframe / Systems Architecture Design

  • Robust API Documentation

  • Fully-Test Driven Codebase

  • Version Control via Git

  • Deployed to Production

Resources