jOpenSpace.cz 2015: Quo vadis, ministerium?
-
Upload
david-ondrich -
Category
Software
-
view
232 -
download
2
Transcript of jOpenSpace.cz 2015: Quo vadis, ministerium?
MIKROSLUŽBY vs. …
1. komponentizace pomocí služeb2. služba = vzdálená knihovna,3. nezávislý deploy4. business capability, functional teams5. smart endpoints, dumb pipes6. decentralised governance7. decentralised data mgmt.8. automatizovaná infrastruktura9. odolnost vůči selhání10. postupný návrh / vývoj
http://martinfowler.com/articles/microservices.html
1. služby2. proces poskytuje ≥1 službu3. program je vyměnitelný za běhu4. procesy pro jednotlivé funkce5. zprávy mezi procesy, fronty zpráv v procesech6. Astra = Java + Groovy (GUI), C++ / C / asm (core), Lua + Perl + sh (server-side scripting), MPS (DSL), custom script (cfg)
7. import / export, MOS, vysílání, media-mgmt8. testy + skripty pro deploy, start skripty9. replikace, orbitální architektura10. levá ruka neví, co dělá pravá
… vs. ASTRA
1. služby2. proces poskytuje ≥1 službu3. program je vyměnitelný za běhu4. procesy pro jednotlivé funkce5. zprávy mezi procesy, fronty zpráv v procesech6. Astra = Java + Groovy (GUI), C++ / C / asm (core), Lua + Perl + sh (server-side scripting), MPS (DSL), custom script (cfg)
7. import / export, MOS, vysílání, media-mgmt8. testy + skripty pro deploy, start skripty9. replikace, orbitální architektura10. levá ruka neví, co dělá pravá
… vs. ASTRA
1. služby2. proces poskytuje ≥1 službu3. program je vyměnitelný za běhu4. procesy pro jednotlivé funkce5. zprávy mezi procesy, fronty zpráv v procesech6. Astra = Java + Groovy (GUI), C++ / C / asm (core), Lua + Perl + sh (server-side scripting), MPS (DSL), custom script (cfg)
7. import / export, MOS, vysílání, media-mgmt8. testy + skripty pro deploy, start skripty9. replikace, orbitální architektura10. levá ruka neví, co dělá pravá
… vs. ASTRA
1. služby2. proces poskytuje ≥1 službu3. program je vyměnitelný za běhu4. procesy pro jednotlivé funkce5. zprávy mezi procesy, fronty zpráv v procesech6. Astra = Java + Groovy (GUI), C++ / C / asm (core), Lua + Perl + sh (server-side scripting), MPS (DSL), custom script (cfg)
7. import / export, MOS, vysílání, media-mgmt8. testy + skripty pro deploy, start skripty9. replikace, orbitální architektura10. levá ruka neví, co dělá pravá
… vs. ASTRA
[values/extrules] AUDIO=$ON_SELECTION(7fff)!=M,AUDIOMODE,data_values/amode|$VALUE(7fff)!=:2:|$FROM(7fff)!=AUDIO1|$FROM(7fff)!=AUDIO2¶ AUDIO1=$ON_SELECTION(1)!=S,AUDIOMODE,data_values/amode1¶ AUDIO2=$ON_SELECTION(1)!=S,AUDIOMODE,data_values/amode2¶ UMID=$DATETIME(1)![1,6]=YYMMDD|$VALUE(1)![7,1]=_|$ON_SELECTION(1)![8,5]=SRC__,CRIT1,data_values/crit1|$VALUE(1)![13,1]=_|$ON_SELECTION(1)![14,6]=SUBSRC,CRIT3,data_values/crit3|$VALUE(1)![20,1]=_|$DATETIME(1)![21,4]=hhmm|$VALUE(1)![25,1]=_|$UNIQUEID(1)![26,3]=named[1,25]¶ NAME=$VALUE(1)!=.Pre|$VALUE(2)!=.Middle|$VALUE(4)!=.Post|$VALUE(8)!=.PostRec|$VALUE(10)!=.NewSelector|$VALUE(20)!=.SaveSelector|$VALUE(40)!=.PHMiddle|$VALUE(80)!=.ReRecordPost|$VALUE(100)!=.ManualEdit|$VALUE(200)!=.PreRecord|$VALUE(400)!=.IngestStarted|$VALUE(800)!=.IngestStopped?$VALUE(8000)!=.NotGenerated¶
1. služby2. proces poskytuje ≥1 službu3. program je vyměnitelný za běhu4. procesy pro jednotlivé funkce5. zprávy mezi procesy, fronty zpráv v procesech6. Astra = Java + Groovy (GUI), C++ / C / asm (core), Lua + Perl + sh (server-side scripting), MPS (DSL), custom script (cfg)
7. import / export, MOS, vysílání, media-mgmt8. testy + skripty pro deploy, start skripty9. replikace, orbitální architektura10. levá ruka neví, co dělá pravá
… vs. ASTRA
VLASTNOSTI
• stovky procesů• tři logovací frameworky, 2× GC• middleware (remote)• fail-over + škálovatelnost• architektonická splácanina• zpětná kompatibilita
ORGANIZAČNÍ OPATŘENÍ
• continuous integration + vyhodnocování buildů• „černé puntíky“
• checklisty pro kontrolu kvality• integrační testy• QA oddělení• lpění na zpětné kompatibilitě
ORGANIZAČNÍ OPATŘENÍ
• continuous integration + vyhodnocování buildů• „černé puntíky“
• checklisty pro kontrolu kvality• integrační testy• QA oddělení• lpění na zpětné kompatibilitě
Sheet1
Page 1
category topic
basics
all English and meaningful binary name
all
all English and meaningful help for the text commands
all
all the program doesn't use the redirection of file descriptors
all
all
all correct ending by CTRL-C
all background process doesn't stop by CTRL-C
all correct handling of the SIGPIPE signal
all correct handling of other signals
all all related unit tests pass with turned on memtest
all English and meaningful names of configuration variables
all check of RT behavior: sent processes, used timers, etc.
all
all needless SVN branches are deleted
logging
all appropriate logging ID (distinguishable processes)
all appropriate default logging verbosity
all enabled logging into the logserv
all disabled logging into the console and files
all disabled (not compiled in) debug messages
all logged all basic states (i.e. no_comm, comm)
all logged start and stop of the process
all
all English logging messages
status reporting
all appropriate status ID (distinguishable processes)
all periodical live ticks
all reported all basic states (i.e. no_comm, comm)
all localized and meaningful status messages
all
backward compatibility
all name of the binary is the same
all old command line switches can be still used
all old configuration can be used without changes
all formats and IDs of binary commands stay the same
all
all
database
all periodical connection refresh
system resources
all memory doesn't grow after some time of active run
all file handles don't grow after some time of active run
all sockets don't grow after some time of active run
English and meaningful help text for --help or use
all components (client manager, dynvar context, shared timers etc.) participate in the help text
all chained text commands work (client manager, shared timers, parent driver class, dynvar context etc.)
correct ending by the konec utility
all extra files (Lua, RNC etc.) are specified in the SMakefile with the install directive if it's needed
logging of all incoming commands (binary, text) except too often repeating ones
correct handling of severities (i.e. resolved disaster should not clean not yet resolved error)
OError codes and domains stay the same
names of text commands, theirs arguments, theirs replies and theirs behaviors haven't changed
ORGANIZAČNÍ OPATŘENÍ
• continuous integration + vyhodnocování buildů• „černé puntíky“
• checklisty pro kontrolu kvality• integrační testy• QA oddělení• lpění na zpětné kompatibilitě
SLUŽBY
• ano, ale…• duplicity (multi-) kódu• chaotická architektura• „levný“ fail-over + horizontální škálování• snadné extendování (3rd middleware)• závislosti mezi službami• verzování API