GithubHelp home page GithubHelp logo

gonextservice's Introduction

Service base

This repository contains base components for our backend services.

Usage

// Any http.Handler compatible struct
mux := http.NewServerMux()
// Create http component
http := application.NewHttpComponent(router)
// Compose new application
app := application.NewApplications(http)
// Run blocks until application exits
err :=  app.Run()
if err ! nil{
    return err
}

Structure

Each compoonent is composed of 3 functions, that will be invoked by the Application

  • Startup
  • Run
  • Close

Lifecycle

---
title: Lifecycle
---
stateDiagram-v2
    state "Application starting" as AS
    state "Application running" as AR
    state is_c_running_state <<choice>>
    state is_a_running_state <<choice>>
    
    [*] --> AS: Application.Run()
    AS --> Component
    state Component {
        [*] --> Starting: Component.Startup()
        Starting --> Running: Component.Run()
        Running --> is_c_running_state
        is_c_running_state --> Running
        is_c_running_state --> Closing: Error
        Closing --> Done: Component.Close()
    }
    AS --> AR: All components has started
    AR --> is_a_running_state
    is_a_running_state --> AR
    is_a_running_state --> Closing: Signal to shutdown
    Done --> [*]
Loading

TODO

  • Test
  • Replace zap with configurable logger
  • Move hardcoded strings into config
  • Document metricz and healthz components
  • Document how to create new components
  • Better documentation

gonextservice's People

Contributors

wexder avatar espeletia avatar

Watchers

Viktor Šmídl avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.