github.com/kaleido-io/firefly@v0.0.0-20210622132723-8b4b6aacb971/docs/developers/code_overview.md (about)

     1  ---
     2  layout: default
     3  title: FireFly Code Overview
     4  parent: Developers
     5  nav_order: 1
     6  ---
     7  
     8  # Firefly Code Overview
     9  {: .no_toc }
    10  
    11  ## Table of contents
    12  {: .no_toc .text-delta }
    13  
    14  1. TOC
    15  {:toc}
    16  
    17  ---
    18  
    19  ## Developer Intro
    20  
    21  FireFly is a second generation implementation re-engineered from the ground up to improve developer experience, runtime performance, and extensibility.
    22  
    23  This means a simplified REST/WebSocket programming model for app development, and a wider range of infrastructure options for deployment.
    24  
    25  It also means a focus on an architecture and code structure for a vibrant open source community.
    26  
    27  A few highlights:
    28  
    29  - Golang codebase
    30    - Strong coding standards, including unit test coverage, translation support, logging and more
    31    - Fast starting, low memory footprint, multi-threaded runtime
    32  - OpenAPI 3.0 API specification (Swagger)
    33    - Generated from the API router code, to avoid divergence with the implementation
    34  - Active/active HA architecture for the core runtime
    35    - Deferring to the core database for state high availability
    36    - Exploiting leader election where required
    37  - Fully pluggable architecture
    38    - Everything from Database through to Blockchain, and Compute
    39    - Golang plugin infrastructure to decouple the core code from the implementation
    40    - Remote Agent model to decouple code languages, and HA designs
    41  - Updated API resource model
    42    - `Asset`, `Data`, `Message`, `Event`, `Topic`, `Transaction`
    43  - Added flexibility, with simplified the developer experience:
    44    - Versioning of data definitions
    45    - Introducing a first class `Context` construct link related events into a single sequence
    46    - Allow many pieces of data to be attached to a single message, and be automatically re-assembled on arrival
    47    - Clearer separation of concerns between the FireFly DB and the Application DB
    48    - Better search, filter and query support
    49    
    50    ## Directories
    51    
    52  - [internal](https://github.com/hyperledger-labs/firefly/tree/main/internal): The core Golang implementation code
    53  - [pkg](https://github.com/hyperledger-labs/firefly/tree/main/pkg): Interfaces intended for external project use
    54  - [cmd](https://github.com/hyperledger-labs/firefly/tree/main/cmd): The command line entry point
    55  - [solidity_firefly](https://github.com/hyperledger-labs/firefly/tree/main/solidity_firefly): Ethereum/Solidity smart contract code