jopenspace.cz 2015: quo vadis, ministerium?

20
QUO VADIS, MINISTERIUM? David Ondřich, Aveco

Upload: david-ondrich

Post on 12-Apr-2017

231 views

Category:

Software


2 download

TRANSCRIPT

QUO VADIS, MINISTERIUM?David Ondřich, Aveco

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

JSOU NĚJAKÉ DOTAZY?!?Dík za pozornost.

@dondrich, [email protected]