SlideShare une entreprise Scribd logo
1  sur  26
Hummingbird: an Open
Source Ground Segment
for Small Satellites
 A true story of doing things different

GSAW 2012
Gert Villemos (Villemos Solutions)
Mark Doyle (Logica) and Johannes Klug (Logica)
What is ‚Hummingbird„

•     An open source software framework (Apache License)

•     For building ground segment systems for small satellites

•     A „back to basics‟ approach

•     Using simplicity as a design principle

•     Pushing as much functionality as possible to existing
      technologies


                                www.hbird.org and facebook

© Logica 2012. All rights reserved          HTML5 and JavaScript rock!   No. 2
The world



                 5 years…




                                                                  8 years…

© Logica 2012. All rights reserved   HTML5 and JavaScript rock!              No. 3
The world we live in




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 4
Business Plan


                                                                  2.0
                                                                  1.0




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!         No. 5
Back to Basics




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 6
Thesis

• Ground segment systems for satellites is no longer special;
  we move data from A to B

• Modern network technologies can be used and are better.
  Lets stop reinventing the wheel

• Complexity is inherited (… and often cultural) and propagates
  through our systems. It is the root of all evil

• Find the root course and remove it. Ground segment system
  can be really simple




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 7
‚New„ Implementation Concept


              Us                                                                  Someone else




                                                           This is hardly brain surgery




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                                  No. 8
Technology Stack (fantastic four)

•   Spring
•   Camel
•   ActiveMQ
•   Cometd



... and yes, its all Java




      ... But components in other
     languages can be integrated



© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 9
Evolution

Hummingbird 0.1
• Classical separation into tiers (transport, business, presentation)
• CCSDS stack Frames → Packets → Parameters
• Distribution of predefined types
• Centered on centralized „System Model‟ (think runtime XTCE)

Hummingbird 0.2
• CCSDS stack „banned‟ to transport tier, fully encapsulated
• True asynchronous processing
• Semantic information model, non-relational databases
• Distribution of „what-ever‟ with plugable services



© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 10
System Integration



                                                   GHttp JPA
                                              JBI         Krati
                                                     SAX    Crypto
                                        APNS
                                             AMQP
                                                Nagio
                                                  RNG       RNC JDBC
                                                s HL7 JMX
                                     JMS       Kestre
                                               UDP      SMTP HDF
                                          SQL l
                                            IRC       Comet
                                                    SIP       SRMI
                                      FTP     TCP        LDAP
                                                      XMPP
                                                      d
                                        SNMPPOP RSS SSH REST
                                              JCloud AWS
                                      Mina
                                          DNSs    PAX JT400
                                                              File
                                      Atom iMAP Hazelcas
                                                                   t




© Logica 2012. All rights reserved    HTML5 and JavaScript rock!       No. 11
Semantic Data
Demand complete                                               Scalable               Extendible
rethinking of processing                                                  stateOf
model. An architectural
driver.                                                                                 State X
                                                       Name
                                                                                        Description
                                                        Raw Value
                                     withRaw
  Description                                           Eng Value
                                                                           stateOf
                                                        Description
                                                                                       Description

                                                        State A

Description                                             State B

                                     stateOf            State C
                                                                                     Description
                Non-normalised                                           stateOf

© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                      No. 12
Service


                               B                                               B
                                                                                          p4

         Limit Check Service                                        p1        p2   p3
         Consumes: Parameter message
         Emits: State Parameter
         Description: The limit check service
         takes as input a parameter, checks its                     e1             e2     e3
         limit and emmits a state parameter
         corresponding to the limit with value
         „true‟ (in limit) or „false‟ (out of limit).
                                                                  Parameter        State Heartbeat
         Heartbeat Service
         Consumes: None
         Emits: Heartbeat
         Description: Issues a ‚alive„ message at
         intervals.




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                                      No. 13
First Flight




Coming up
• EstCube (University of Estland)
• Strand (Surrey Satellites)
• TechDemoSat-1 (UK Space Agency)

© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 14
Initial Results

 • Having implemented guestimated 10% of the functionality of
   similar existing systems
 • Commanding (scheduling, pre release
   validation, release, verification and history)
 • Monitoring (parameter creation, limit check, consistency
   check, calibration and history)
 • Orbit and contact prediction                   New code base 1k LoC




Existing code
                                                                   Projected code base
base ~1m Lines
                                                                   10k LoC
of Code (LoC)


 © Logica 2012. All rights reserved   HTML5 and JavaScript rock!                    No. 15
Value

• Highly motivated staff, learning by doing

•     Concepts feedback into winning „normal‟ work

•     Door opener to new, and frequently unexpected,
      markets

•     Great PR

•     Neither predictable nor quantifiable but very real




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 16
Business Model

•     Open Source Core

•     Enterprise Edition
•     Liability
•     Tested
•     Proven
•     Documented
•     Evolution plan
•     Ahead of the curve

•     Services and added value products



© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 17
Conclusions

•     Nothing is more convincing than to stop talking and start
      doing

•     Standard technologies (of course) work for space data
      systems

•     System integration can be very simple, we make it complex

•     ‚Managing„ an open source community is not simple




© Logica 2012. All rights reserved   HTML5 and JavaScript rock!   No. 18
?              ?   !       ?
                                         !     ?           ? !        !   ?




                                              Questions?



     Read more at: www.hbird.org and facebook


© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                   No. 19
Business Tier


                                                                  CometD Streaming
          Spring Component Assembly




                 Camel Integration



                              ActiveMQ Distribution




                                                                   Services


© Logica 2012. All rights reserved   HTML5 and JavaScript rock!                      No. 20
WARNING: Source code ahead!




 ... the message is not in the code itself, but in the changes to the code


© Logica 2012. All rights reserved   HTML5 and JavaScript rock!              No. 21
The Modern Code Base
 public class Manager implements IManager {

     protected IWorker worker = new Worker();

     public void manage() {
       worker.work("1:2:3");
     }
 }



 public class Worker implements IWorker {

     protected IPublisher publisher = new Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
       for (String element : elements) {
         long value = Long.parseLong(element);
        publisher.display(value);
       }
     }
 }



 public class Publisher implements IPublisher {

     public void display(long value) {
       System.out.println("Test value: " + value);
     }
 }


© Logica 2012. All rights reserved    HTML5 and JavaScript rock!   No. 22
The Modern Code Base
 public class Manager implements IManager {

     protected IWorker worker = new Worker();

     public void manage() {
         worker.work("1:2:3");
     }                                                                Only three lines of
 }
                                                                      business logic here...

 public class Worker implements IWorker {

     protected IPublisher publisher = new Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
         for (String element : elements) {
           long value = Long.parseLong(element);
          publisher.display(value);
         }
     }
 }



 public class Publisher implements IPublisher {

     public void display(long value) {
   System.out.println("Test value: " +
 value);
     }
 }
© Logica 2012. All rights reserved       HTML5 and JavaScript rock!                            No. 23
The Modern Code Base
 public class Manager implements IManager {                        <bean id=“manager” class=“foo.Manager”/>

     protected IWorker worker = new Worker();                      <bean id=“worker” class=“foo.Worker”/>

     public void manage() {                                        <bean id=“publisher” class=“foo.Publisher”/>
       worker.work("1:2:3");
     }                                                             <route>
 }                                                                       <from uri=“timer://foo?period=60000”/>
                                                                         <to uri=bean:manager" />
                                                                         <to uri=“bean:worker”/>
                                                                         <to uri=„bean:publisher"/>
 public class Worker implements IWorker {                          </route>

  protected IPublisher publisher = new
 Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
       for (String element : elements) {
         long value = Long.parseLong(element);
        publisher.display(value);
       }
     }
 }


 public class Publisher implements IPublisher {

     public void display(long value) {
       System.out.println("Test value: " + value);
     }
 }


© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                                  No. 24
The Modern Code Base
 public class Manager implements IManager {                        <bean id=“manager” class=“foo.Manager”/>

     protected IWorker worker = new Worker();                      <bean id=“worker” class=“foo.Worker”/>

     public void manage() {                                        <bean id=“publisher” class=“foo.Publisher”/>
       worker.work("1:2:3");
     }                                                             <route>
 }                                                                       <from uri=“timer://foo?period=60000”/>
                                                                         <to uri=bean:manager" />
                                                                         <split>
                                                                                <method bean=“worker”/>
 public class Worker implements IWorker {                                       <to uri=„bean:publisher"/>
                                                                         </split>
  protected IPublisher publisher = new                             </route>
 Publisher();

     public void work(String values) {
     String[] elements = values.split(":");
       for (String element : elements) {
        long value = Long.parseLong(element);
        publisher.display(value);
       }
     }
 }


 public class Publisher implements IPublisher {

     public void display(long value) {
       System.out.println("Test value: " + value);
     }
 }


© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                                  No. 25
The Modern Code Base
                                                                   <bean id=“manager” class=“foo.Manager”/>
 public class Manager {
                                                                   <bean id=“worker” class=“foo.Worker”/>
     public String manage() {
       return "1:2:3";
                                                                   <bean id=“publisher” class=“foo.Publisher”/>
     }
 }
                                                                   <route>
                                                                         <from uri=“timer://foo?period=60000”/>
                                                                         <to uri=bean:manager" />
                                                                         <split>
                                                                                <method bean=“worker”/>
 public class Worker {                                                          <to uri=„bean:publisher"/>
                                                                         </split>
     public String[] work(String values) {                         </route>
       return values.split(":");
     }                                                             Massive code base reduction
 }

                                                                   Only business logic in the
                                                                   code, routing in the configuration

                                                                   Fantastic code metrics (no
 public class Publisher {
                                                                   coupling)
     public void display(long value) {
       System.out.println("Test value: " + value);                 100% test coverage easy to reach
     }
 }

© Logica 2012. All rights reserved    HTML5 and JavaScript rock!                                                  No. 26

Contenu connexe

Tendances

Openflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson CollaborationOpenflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson Collaboration
Ericsson Labs
 
Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical
ISSGC Summer School
 

Tendances (15)

JavaYDL9
JavaYDL9JavaYDL9
JavaYDL9
 
09slide
09slide09slide
09slide
 
The NERD project
The NERD projectThe NERD project
The NERD project
 
Frame mode mpls
Frame mode mplsFrame mode mpls
Frame mode mpls
 
Foreman presentation at NYC puppet users
Foreman presentation at NYC puppet usersForeman presentation at NYC puppet users
Foreman presentation at NYC puppet users
 
Inside Sql Azure - Cihan Biyikoglu - SQL Azure
Inside Sql Azure - Cihan Biyikoglu - SQL AzureInside Sql Azure - Cihan Biyikoglu - SQL Azure
Inside Sql Azure - Cihan Biyikoglu - SQL Azure
 
Openflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson CollaborationOpenflow Stanford University - Ericsson Collaboration
Openflow Stanford University - Ericsson Collaboration
 
Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical
 
Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
2010 10 provxg_datagovuk
2010 10 provxg_datagovuk2010 10 provxg_datagovuk
2010 10 provxg_datagovuk
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Sparse Content Map Storage System
Sparse Content Map Storage SystemSparse Content Map Storage System
Sparse Content Map Storage System
 
Granularity in linked open data
Granularity in linked open dataGranularity in linked open data
Granularity in linked open data
 
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao factsTendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
 
Lte security overview
Lte security overviewLte security overview
Lte security overview
 

En vedette (6)

Personal Learning Networks
Personal Learning NetworksPersonal Learning Networks
Personal Learning Networks
 
Senior Project Speech
Senior Project SpeechSenior Project Speech
Senior Project Speech
 
Senior project Pictures
Senior project PicturesSenior project Pictures
Senior project Pictures
 
Senior Project Stand and Deliver
Senior Project Stand and DeliverSenior Project Stand and Deliver
Senior Project Stand and Deliver
 
Senior Project Research Paper
Senior Project Research PaperSenior Project Research Paper
Senior Project Research Paper
 
My Final Dissertation
My Final DissertationMy Final Dissertation
My Final Dissertation
 

Similaire à Hummingbird - Open Source for Small Satellites - GSAW 2012

SD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons LearnedSD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons Learned
Ted Leung
 
Turmeric SOA Cloud Mashups
Turmeric SOA Cloud MashupsTurmeric SOA Cloud Mashups
Turmeric SOA Cloud Mashups
kingargyle
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
QAware GmbH
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons Learned
Ted Leung
 
Critical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software DesignCritical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software Design
top500
 
NIG系統報表開發指南
NIG系統報表開發指南NIG系統報表開發指南
NIG系統報表開發指南
Guo Albert
 

Similaire à Hummingbird - Open Source for Small Satellites - GSAW 2012 (20)

SD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons LearnedSD Forum 1999 XML Lessons Learned
SD Forum 1999 XML Lessons Learned
 
The Forces Driving Java
The Forces Driving JavaThe Forces Driving Java
The Forces Driving Java
 
OpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosOpenStack and OpenFlow Demos
OpenStack and OpenFlow Demos
 
Cloud Foundry Demo SD Forum Cloud Sig Feb09
Cloud Foundry Demo SD Forum Cloud Sig Feb09Cloud Foundry Demo SD Forum Cloud Sig Feb09
Cloud Foundry Demo SD Forum Cloud Sig Feb09
 
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
 
Turmeric SOA Cloud Mashups
Turmeric SOA Cloud MashupsTurmeric SOA Cloud Mashups
Turmeric SOA Cloud Mashups
 
AKKA and Scala @ Inneractive
AKKA and Scala @ InneractiveAKKA and Scala @ Inneractive
AKKA and Scala @ Inneractive
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012
 
Notes on a High-Performance JSON Protocol
Notes on a High-Performance JSON ProtocolNotes on a High-Performance JSON Protocol
Notes on a High-Performance JSON Protocol
 
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons Learned
 
Visualizing content in metadata stores
Visualizing content in metadata storesVisualizing content in metadata stores
Visualizing content in metadata stores
 
Introducing JSR-283
Introducing JSR-283Introducing JSR-283
Introducing JSR-283
 
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
Ceph Day Seoul - AFCeph: SKT Scale Out Storage Ceph
 
ghfghg
ghfghgghfghg
ghfghg
 
Critical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software DesignCritical Issues at Exascale for Algorithm and Software Design
Critical Issues at Exascale for Algorithm and Software Design
 
NIG系統報表開發指南
NIG系統報表開發指南NIG系統報表開發指南
NIG系統報表開發指南
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
OpenStack Dragonflow shenzhen and Hangzhou  meetupsOpenStack Dragonflow shenzhen and Hangzhou  meetups
OpenStack Dragonflow shenzhen and Hangzhou meetups
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Hummingbird - Open Source for Small Satellites - GSAW 2012

  • 1. Hummingbird: an Open Source Ground Segment for Small Satellites A true story of doing things different GSAW 2012 Gert Villemos (Villemos Solutions) Mark Doyle (Logica) and Johannes Klug (Logica)
  • 2. What is ‚Hummingbird„ • An open source software framework (Apache License) • For building ground segment systems for small satellites • A „back to basics‟ approach • Using simplicity as a design principle • Pushing as much functionality as possible to existing technologies www.hbird.org and facebook © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 2
  • 3. The world 5 years… 8 years… © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 3
  • 4. The world we live in © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 4
  • 5. Business Plan 2.0 1.0 © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 5
  • 6. Back to Basics © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 6
  • 7. Thesis • Ground segment systems for satellites is no longer special; we move data from A to B • Modern network technologies can be used and are better. Lets stop reinventing the wheel • Complexity is inherited (… and often cultural) and propagates through our systems. It is the root of all evil • Find the root course and remove it. Ground segment system can be really simple © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 7
  • 8. ‚New„ Implementation Concept Us Someone else This is hardly brain surgery © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 8
  • 9. Technology Stack (fantastic four) • Spring • Camel • ActiveMQ • Cometd ... and yes, its all Java ... But components in other languages can be integrated © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 9
  • 10. Evolution Hummingbird 0.1 • Classical separation into tiers (transport, business, presentation) • CCSDS stack Frames → Packets → Parameters • Distribution of predefined types • Centered on centralized „System Model‟ (think runtime XTCE) Hummingbird 0.2 • CCSDS stack „banned‟ to transport tier, fully encapsulated • True asynchronous processing • Semantic information model, non-relational databases • Distribution of „what-ever‟ with plugable services © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 10
  • 11. System Integration GHttp JPA JBI Krati SAX Crypto APNS AMQP Nagio RNG RNC JDBC s HL7 JMX JMS Kestre UDP SMTP HDF SQL l IRC Comet SIP SRMI FTP TCP LDAP XMPP d SNMPPOP RSS SSH REST JCloud AWS Mina DNSs PAX JT400 File Atom iMAP Hazelcas t © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 11
  • 12. Semantic Data Demand complete Scalable Extendible rethinking of processing stateOf model. An architectural driver. State X Name Description Raw Value withRaw Description Eng Value stateOf Description Description State A Description State B stateOf State C Description Non-normalised stateOf © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 12
  • 13. Service B B p4 Limit Check Service p1 p2 p3 Consumes: Parameter message Emits: State Parameter Description: The limit check service takes as input a parameter, checks its e1 e2 e3 limit and emmits a state parameter corresponding to the limit with value „true‟ (in limit) or „false‟ (out of limit). Parameter State Heartbeat Heartbeat Service Consumes: None Emits: Heartbeat Description: Issues a ‚alive„ message at intervals. © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 13
  • 14. First Flight Coming up • EstCube (University of Estland) • Strand (Surrey Satellites) • TechDemoSat-1 (UK Space Agency) © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 14
  • 15. Initial Results • Having implemented guestimated 10% of the functionality of similar existing systems • Commanding (scheduling, pre release validation, release, verification and history) • Monitoring (parameter creation, limit check, consistency check, calibration and history) • Orbit and contact prediction New code base 1k LoC Existing code Projected code base base ~1m Lines 10k LoC of Code (LoC) © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 15
  • 16. Value • Highly motivated staff, learning by doing • Concepts feedback into winning „normal‟ work • Door opener to new, and frequently unexpected, markets • Great PR • Neither predictable nor quantifiable but very real © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 16
  • 17. Business Model • Open Source Core • Enterprise Edition • Liability • Tested • Proven • Documented • Evolution plan • Ahead of the curve • Services and added value products © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 17
  • 18. Conclusions • Nothing is more convincing than to stop talking and start doing • Standard technologies (of course) work for space data systems • System integration can be very simple, we make it complex • ‚Managing„ an open source community is not simple © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 18
  • 19. ? ? ! ? ! ? ? ! ! ? Questions?  Read more at: www.hbird.org and facebook © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 19
  • 20. Business Tier CometD Streaming Spring Component Assembly Camel Integration ActiveMQ Distribution Services © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 20
  • 21. WARNING: Source code ahead! ... the message is not in the code itself, but in the changes to the code © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 21
  • 22. The Modern Code Base public class Manager implements IManager { protected IWorker worker = new Worker(); public void manage() { worker.work("1:2:3"); } } public class Worker implements IWorker { protected IPublisher publisher = new Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 22
  • 23. The Modern Code Base public class Manager implements IManager { protected IWorker worker = new Worker(); public void manage() { worker.work("1:2:3"); } Only three lines of } business logic here... public class Worker implements IWorker { protected IPublisher publisher = new Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 23
  • 24. The Modern Code Base public class Manager implements IManager { <bean id=“manager” class=“foo.Manager”/> protected IWorker worker = new Worker(); <bean id=“worker” class=“foo.Worker”/> public void manage() { <bean id=“publisher” class=“foo.Publisher”/> worker.work("1:2:3"); } <route> } <from uri=“timer://foo?period=60000”/> <to uri=bean:manager" /> <to uri=“bean:worker”/> <to uri=„bean:publisher"/> public class Worker implements IWorker { </route> protected IPublisher publisher = new Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 24
  • 25. The Modern Code Base public class Manager implements IManager { <bean id=“manager” class=“foo.Manager”/> protected IWorker worker = new Worker(); <bean id=“worker” class=“foo.Worker”/> public void manage() { <bean id=“publisher” class=“foo.Publisher”/> worker.work("1:2:3"); } <route> } <from uri=“timer://foo?period=60000”/> <to uri=bean:manager" /> <split> <method bean=“worker”/> public class Worker implements IWorker { <to uri=„bean:publisher"/> </split> protected IPublisher publisher = new </route> Publisher(); public void work(String values) { String[] elements = values.split(":"); for (String element : elements) { long value = Long.parseLong(element); publisher.display(value); } } } public class Publisher implements IPublisher { public void display(long value) { System.out.println("Test value: " + value); } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 25
  • 26. The Modern Code Base <bean id=“manager” class=“foo.Manager”/> public class Manager { <bean id=“worker” class=“foo.Worker”/> public String manage() { return "1:2:3"; <bean id=“publisher” class=“foo.Publisher”/> } } <route> <from uri=“timer://foo?period=60000”/> <to uri=bean:manager" /> <split> <method bean=“worker”/> public class Worker { <to uri=„bean:publisher"/> </split> public String[] work(String values) { </route> return values.split(":"); } Massive code base reduction } Only business logic in the code, routing in the configuration Fantastic code metrics (no public class Publisher { coupling) public void display(long value) { System.out.println("Test value: " + value); 100% test coverage easy to reach } } © Logica 2012. All rights reserved HTML5 and JavaScript rock! No. 26