ICANS goes Hochschulen

Mittendrin statt nur dabei ist in diesem Sommer das Motto der ICANS. Wir nehmen an verschiedenen Veranstaltungen teil, um euch vor Ort zu treffen und euch die Möglichkeit zu geben, uns live und in Farbe zu erleben.

Folgende Veranstaltungen stehen bisher fest in unserem Terminkalender:

  • Oberseminar Uni Hamburg Vortrag zum Thema *PHP Sucks!?*

                Wann?  15.Mai 2012
                                16:15 bis 17:45 Uhr

                Wo?    Uni Hamburg, Fachbereich Informatik, 
                              Vogt-Kölln-Straße 30, D-220

→ Wer uns letztes Jahr bei der FH Wedel verpasst hat, bekommt jetzt die große
Chance Stefan und Simon bei ihrem grandiosen Vortrag über die Vor- und
Nachteile von php zu erleben und anschließend mit den beiden zu diskutieren.

Weitere Infos

(siehe auch PHP Vortrag an der FH Wedel)

  • Firmenkontaktmesse der FH Wedel

              Wann?      31. Mai 2012
                                10 bis 16 Uhr

               Wo?         FH Wedel,                                                         Feldstraße 143,
                                Stand: 14

→ Als Fördermitglied der FH Wedel lassen wir es
uns natürlich auch in diesem Jahr nicht nehmen, die ICANS auf der
Firmenkontaktmesse zu präsentieren. Wir haben schon einige Überraschungen
vorbereitet und freuen uns auf euren Besuch an Stand 14!

Weitere Infos

  • Firmenkontaktmesse der FH Brandenburg

             Wann?        10. Juni 2012
                                  12 bis 16 Uhr

             Wo?             FH Brandenburg, Magdeburger Str. 50,
                                 Stand: tbd

→ In diesem Jahr sind wir auch in Brandenburg anzutreffen. Um unser Netzwerk zu erweitern und mehr Studenten von den tollen Einstiegsmöglichkeiten bei der ICANS zu berichten, wagen wir uns aus dem Hamburger Speckgürtel heraus und sind schon ganz gespannt, was uns dort erwartet!

Weiter Infos!

Noch Fragen oder Vorschläge?

Einfach eine Mail an bewerbung@icans-gmbh.com senden und wir reagieren prompt!

Veröffentlicht unter Development, Workshops | Hinterlasse einen Kommentar

Praktikum in der Webentwicklung – Als Pionier bei der ICANS

In den vergangenen sechs Monaten hatte ich als Praktikant im Software Engineering bei ICANS die Gelegenheit, in einem dynamischen Unternehmen in der Webentwicklung reinzuschnuppern und Praxiserfahrung zu sammeln. Da dies für beide Seiten eine neue Situation war, möchte ich hier ein wenig von meinen Erfahrungen berichten.

In erster Linie war natürlich für mich alles neu, da dies meine erste Beschäftigung überhaupt in der IT-Branche war und meine Vorerfahrungen sich dementsprechend auf die im Studium erworbenen Kenntnisse beschränkten. So waren PHP und Webentwicklung im Allgemeinen für mich völlig neue Themen, die ich erst noch erlernen musste. Auch z.B. über HTML oder das Arbeiten auf einer Linux VM wusste ich nur rudimentär Bescheid.

Umgekehrt war es aber auch für die ICANS eine neue Erfahrung, schließlich war ich wohl auch der erste Praktikant im Web Development (zumindest seit sehr langer Zeit). Daher gab es – entgegen der sonst professionellen Organisation – keine speziell auf Praktikanten zugeschnittenen vordefinierten Prozesse. Doch alles der Reihe nach.

Die ersten Wochen meines Praktikums verbrachte ich zunächst in der Qualitätssicherung, wo ich mich in einer sehr lockeren Arbeitsatmosphäre sofort wohl fühlte und schnell integrierte. Durch meine Mitarbeit an der Testautomatisierung und zahlreiche Einführungsvorträge erhielt ich schnell einen guten Überblick über Strukturen, Prozesse und Begriffe im Unternehmen. Nach sechs unterhaltsamen und interessanten Wochen in der QA hatte ich dann aber vor allem eines: Lust zu entwickeln!

Zwischenzeitlich gab es im Rahmen des ECF-Projekts eine Umstrukturierung der Entwicklerteams, sodass ich die Gelegenheit hatte, in einem neu formierten Team ab der ersten Stunde dabei zu sein und bei Themen wie Namensgebung, teaminterner Organisation oder auch der Erarbeitung technischer Konzepte mitzubestimmen. Dabei hat mich selbst etwas überrascht, dass ich von Anfang an als vollwertiges Teammitglied ernst genommen wurde und keineswegs “nur der Praktikant” war. Obwohl ich dies insgesamt als sehr positiv empfand, war ich gerade in der Anfangsphase manchmal auch etwas überfordert mit dieser Rolle.

Zunächst stand für mich die Einarbeitung in PHP und die angewandten Technologien, insbesondere in das Symfony2-Framework, auf dem Plan. Dies erfolgte zumeist durch das Abarbeiten kleinerer, abgeschlossener Tasks, im Pair Programming oder alleine. Hierbei hätte ich mir zum Teil eine gezieltere Einführung gewünscht, beispielsweise durch Vorträge wie zu anderen Bereichen bei der ICANS üblich. Doch dies lag vermutlich auch daran, dass sich das Projekt selbst noch in einem frühen Stadium befand, zukünftige Praktikanten werden hier sicher ein verstärktes Mentoring erhalten.

Nach dem Überwinden dieser kleineren Anfangsschwierigkeiten genoss ich es jedoch sehr, in einem motivierten Team in lockerer, humorvoller Atmosphäre mitzuentwickeln. Während meiner Zeit im Web Development konnte ich einige neue Technologien und Frameworks wie Symfony2, Doctrine, MongoDB, Twig, SwiftMailer kennenlernen. Ich erlernte PHP, vertiefte meine Kenntnisse in XML und HTML und erhielt Einblick in JavaScript und CSS. Außerdem hörte ich Vorträge namhafter Consultants wie z.B. David Zülke oder Arne Blankerts und nahm an einem PHPUnit-Workshop mit Sebastian Bergmann teil.

Über das Fachliche hinaus beeindruckten mich vor allem die Top-Organisation sowie die Firmenphilosophie, den Mitarbeitern sehr großes Vertrauen entgegen zu bringen und dafür zu sorgen, dass diese sich am Arbeitsplatz möglichst wohl fühlen. So erlernte ich z.B. auch Waveboarden, Freeboarden und Sporthockern auf dem Gang.

Alles in allem hatte ich eine echt tolle Zeit bei der ICANS und würde mich rückblickend jederzeit wieder für das Praktikum dort entscheiden.

Veröffentlicht unter Development, Insights | Hinterlasse einen Kommentar

Programs Testing Programs

The successful adoption of automated tests

Many companies decide to use automated tests in their software quality assurance. This is nothing new, but it became more and more important as more tools appeared on the market to assist these attempts. They are all “easy to use” and the “solution to all problems of testing” and can “prevent bad software quality”. But let’s have a closer look at this.

If “a company” decides to use a test automation tool, it’s in general a management decision as this is an investment. You need people to evaluate the right tool (or at least, you should do this!), a tool must be purchased (if it is not open source), test cases need to be automated and you’ll need an environment to execute these automated tests. A very common cause for the decision is the idea to reduce time and expenses for testing. This would imply that you can save money for your testing staff and gain a better time-to-market. At first glance this looks like a good idea. Automated tests are quicker than manual tests, so this can be achieved. But why not just run fewer tests, avoid long test runs and reduce regression testing? This would be the easiest way to save time and money. Well, the most certain answer would be: “Because our software would be full of bugs and our customers will be very dissatisfied with it”. So it is quite obvious, that testing is not the problem, but the quality of the software. So at first you should have a look at your software developing process and your test process and optimize them.

So, if test automation is not the solution to all problems in testing, what is it good for? Well, first of all it’s good for regression testing. Every tester knows how boring it is to test the same stuff every release again and again. And humans tend to work sloppy, when things get boring. But this is a perfect task for a computer. It does not bother to do the same things again and it runs tests in the 500th iteration as accurate as in the first and is still faster than a human tester. With a good automated regression test you can release your tester from this unloved task and I’m sure there are a lot of other things to test for them.

Did I say “a good automated regression test”? What is “good” in this case? How do I know that my test automation helps me? Or if I try to improve it, how can I know, that it has improved? The answer to this is easy: Measuring. And for that we need metrics. One easy to calculate metric for your test process is the DDP (defect detection percentage). It’s just the defects found by testing divided by the total number of known defects. This is a good indicator to monitor improvements in your testing process, but it should not be the only one.

With the help of metrics, it is possible to monitor your testing process, but the test automation is only a part of this. So, which quality attributes are important for test automation? Although this depends on your goals, your environment and your software etc. there are some general attributes, which should be kept in mind:

  • Maintainability
  • Efficiency
  • Reliability
  • Flexibility
  • Usability
  • Robustness
  • Portability

What are we doing here at ICANS? We automated every business critical part of PokerStrategy.com. Those tests are running every night on different test stages. We have about 865 test cases in our GUI-based test automation, these tests run about 9 hours. The test execution is performed with 5 virtual Windows Machines with Firefox and Internet Explorer. This way we were able to cut our manual regression test from 12 hour per release to 4 hours per release although we’re testing a lot more than before. All test results can be viewed in our continuous integration system “Jenkins”. By this we have a good transparency of the current status of our software quality. We can react fast on defects and have the good feeling to know, that we did not forget to test something important.



 

Veröffentlicht unter Development | Hinterlasse einen Kommentar

Why you should *really* work at ICANS – Pt.I

ICANS - Because after a great fulfilling 16hour work day you’re even allowed to have a short nap at ICANS office ;)

Veröffentlicht unter Office Life | Hinterlasse einen Kommentar

PokerStrategy.com in der aktuellen Ausgabe des SPIEGEL

In der aktuellen Ausgabe des SPIEGEL findet sich ein ausführlicher Artikel über die von uns entwickelte und von technischer Seite betreute Webseite PokerStrategy.com. DER SPIEGEL hatte PokerStrategy.com vor einer Weile kontaktiert und schickte einen Journalisten nach Gibraltar. Dort unterhielt sich Manfred Dworschak mit verschiedenen Mitarbeitern und den Firmengründern, bildete sich einen Eindruck von der Firma und sah auch einer Live Coaching Session zu.

Daraus entstand eine Reportage, die einen Einblick in die Welt des Online Poker liefert und ausführlich das Geschäftsmodell der Pokerschule PokerStrategy.com beschreibt. Von den Ursprüngen des Firmengründers Dominik “Korn” Kofert in der “Starcraft”-Szene, bis zum Ausbau seiner Firma zur größten Pokerschule im Internet. “Eines Tages ging ihm auf, dass das Pokern ebenfalls kritisches Denken verlangt, aber wesentlich lukrativer ist”.

Der Bericht lässt auch die Probleme des Spiels nicht unerwähnt, z.B. den Unterschied zwischen den mathematisch und technisch ausgebildeten Profis und den unerfahrenen Freizeitspielern.

Insgesamt berichtet der Artikel objektiv über einen “Modellversuch in modernem E-Learning”. Der Erfolg zeige sich täglich, viele Schüler legten beträchtlichen Lerneifer an den Tag. “In den Foren des Portals diskutieren sie unentwegt über den Wert aller erdenklichen Kartenkombinationen: Was taugt mein Ass mitsamt König, wenn in der Mitte zwei Fünfen und ein Bube aufgedeckt sind und ich rechts vom Kartengeber sitze? Erhöhen, mitgehen oder raus aus dem Spiel?”

Zum Ende wird auch ein Ausblick geboten, die Expansion der Firma in andere Wissensgebiete. Dominik Kofert glaubt an den Erfolg seines Lehrmodells in anderen Gebieten wie dem Devisen- und Aktienhandel und plant mit Tradimo.com eine neue Schule nach gleichem Modell. “Im Erfolgsfall müssen sich auch andere Branchen auf neue Mitspieler gefasst machen.”
Und wir bei der ICANS – als Entwickler der generischen Kerntechnologie ECF (Education Community Framework) – auf viele weitere spannende Herausforderungen.

Der Artikel “Universität des Zockens” befindet sich in der Zeitschriftenausgabe Nr. 8, 2012 des SPIEGEL auf Seite 110-114. Die Zeitschrift ist in jedem Zeitschriftenladen, sowie online auf DER SPIEGEL digital zu kaufen.

Veröffentlicht unter Insights | Hinterlasse einen Kommentar

STOP! Bis hier hin hast du alles richtig gemacht – Studium & Wissenschaft bei ICANS

  • Du hast dich für ein informationstechnisches Studium entschieden.
  • Du gehörst zu den besten deines Jahrgangs.
  • Softwareentwicklung ist nicht nur dein Job, sondern deine Berufung.

 

Als nächsten Schritt suchst du eine Herausforderung für dein Praktikum, deine Bachelor-/ Master-Thesis, oder für deine Dissertation. Diese soll deinen hohen akademischen Erwartungen, genauso wie deinen Ansprüchen an direkte Praxisrelevanz zu 100% gerecht werden.

 

Unsere Themen für Dich:

Analysis of web systems and observation of their run-time behavior 
I) Traceability of run-time behavior across system boundaries
II) Prediction of workload of system resources => computer-aided resource planning
III) Static and dynamic software analysis with regard to dependencies within data and data manipulation
IV) Benchmarking of new features in our production environment before their actual release
V) Domain-specific health reporting
VI) Pre-emptive page preparation

Analysis of user behavior in heavily populated systems
VII) Process modelling for online user behavior
VIII) Measuring online user behaviour: metrics and methods
IX) Simulation of the dynamics of a sequence of poker games
X) Large-Scale graph mining to calculate metrics in online poker

Organization development 
XI) Continuous decentralized appraisal system

Other
XII) … deine eigene inspirierende Idee die du mit uns gemeinsam umsetzen willst

Klingt ziemlich interessant? Details zu den Themen!


Dein Betreuer-Team:

Benefits:

  • Arbeiten an praxisrelevanten Herausforderungen für Hochlast- und Hochverfügbarkeitsumgebungen
  • 70 kluge und aufgeschlossene Köpfe
  • Regelmäßig stattfindende Fachvorträge
  • Top finanzielle Unterstützung
  • Freie Verpflegung

 

Lust? Ruf einfach bei uns an +49 40 22638290, oder schreib eine E-Mail an bewerbung@icans-gmbh.com.

Veröffentlicht unter Uncategorized | Kommentare deaktiviert

PHPUnit-Workshop with Sebastian Bergmann

We at the ICANS had a prominent visitor for two days, Sebastian Bergmann, Creator of PHPUnit and Co-Founder of thePHP.cc.

On the first day Sebastian was invited to have 3-hour working sessions with each of our ECF Teams to

  1. have a look at the unit-tests we have been writing so far
  2. help us find answers to open questions

On the second day Sebastian compiled the questions of all three teams and addressed the whole ECF Team with his findings in a presentation.

Working Session

Q&A session

We started the working session in our Fortress bureau on thursday morning with some rather easy questions to get the meeting going nice and relaxed.

Can skeleton templates be adjusted?
Yes, templates reside in $PHPUnitHome/Util/Skeleton/Template.
The default template-files are named “TestClass.tpl.dist”, “TestMethod.tpl.dist”…
To overwrite these predefined templates copy the “*.tpl.dist” to “*.tpl”.
PHP Unit will always first search for a *.tpl file and use the “*.tpl.dist” as fallback.
Open points:
How do we distribute these package-based files as a company-wide template?

Should “getMock()” or the built-in MockBuilder be used?
MockBuilder! It is a highly efficient Wrapper that internally uses “getMock” but makes setting the various parameters for much easier. “getMock” is kind of deprecated for direct usage.

Failing tests on external dependencies
In case a test depending on an external PHP module is failing it is legitimate
to mark this test as skipped.
In some cases it might be usefull to have a single unit-test running before all others
that is checking all external dependencies and marks the whole test as failed.

How do we mock file based operations to keep a file-based test a unittest?
vfsStream is a stream wrapper for a virtual file system that is very helpful in unit tests to mock the real file system. It can be used with any unit test framework, like PHPUnit.
-> Example.php
-> ExampleTest.php

Practical session

In the following pratical session Sebastion helped us with an actual test with a rather complex situation of nested Mock Objects. In this case we wanted to test the StructureCreator that delivers Symfony2 form-entities to be used for user-interaction.

This StructureCreator holds two difficulties for UnitTests:

  1. It has strong external dependencies:
    • the StructureFactory
    • the StructureService
    • the LanguageService
  2. It makes use of two private functions that encapsulate the main functionalities and can therefore not be tested directly.

The outcome of this session comprised of the following:

  1. Setup frequently used mock-objects in the setUp()-method, further configure these mocks in the test-methods to cater the special requirements of the test.
  2. If you have to create the same type of mock-object but with slightly different behavior extract the creation of this object to a new function that takes the needed configuration as parameter to keep the code readable and avoid code-duplication.
  3. Initially we hoped we could somehow simplify this “mock-extravaganza” but in the end we didn’t come up with another solution than to not really test the private method by mocking the StructureCreator and it’s private methods which we decided not to do but rather to implement the fully mocked test.

The bottom line

Sebastian answered all our question with a professional attitude and patience, no question was left unanswered. He was always helpful and seemed rather happy that we came up with lots of different questions. During one of the session we even were even able to find a minor bug in the creation of Test-Skeletons which Sebastian fixed and pushed into the repository as a new version right away.

Version 3.6.8 will fix the not working “@covers” annotation when creating
Test-Skeletons for an existing class.

The knowledge Sebastian was able to share with us face to face will stick quiet a bit longer than if we would just have read about possible solutions to our questions in a book or on the internet. Sebastian ended his presentation by sharing some insights about the upcoming PHP version 5.4 and rather funny anecdotes from his intensive PHP experience.

Paamayim Nekudotayim anyone? :)

Especially for me that I haven’t had a lot of Unit-Test experience before joining the ICANS it was a very challenging but nonetheless awesome session. Getting to personally know the guy behind PHPUnit and discussing difficult real-life test-situations was a rather unique experience.

Cheers, ICANS, for making it happen!

Veröffentlicht unter Guests, Workshops | Kommentare deaktiviert

Chef koch(t) – Reloaded

Nicht nur unser technischer Geschäftsführer Tom macht eine gute Figur als Kochunterstützung  in der Küche – nein auch David – unser kaufmännischer Geschäftsführer – steht ihm bei den Kochkünsten in nichts nach.

Letzten Donnerstag kamen wir in den Genuss, dass David gemeinsam mit unserer Küchenfee Marie allen Mitarbeiter ein leckeres Essen gezaubert hat.

Zum Hauptgang verwöhnten sie uns mit Penne Arrabiata.
Typisch für den Finance-Bereich, für den David u.a. auch verantwortlich ist, sind Zahlen. Also hier noch ein paar Fakten im Überblick.

Verarbeitet wurden:

  • 7 Kilo Nudeln
  • 15 Dosen geschälte Tomaten
  • 5 Basilikumsträuche
  • eine Knolle Knoblauch
  • jede Menge Chilieschoten und
  • 1 Kilo geriebener Parmesan

Als süße Abrundung gab es dann ein leckeres Tiramisu.

Das Kochen mit David war auch der Startschuss für den in Zukunft monatlichen stattfindeten Pasta-Tag bei der ICANS. „Nunca basta con la pasta!“
Anbei ein paar Bilder von unserem ersten Pasta-Tag:

 

Veröffentlicht unter Insights, Office Life | Kommentare deaktiviert

Karriere & Weiterbildung bei der ICANS

Softwareentwicklung auf kontinuierlich höchstem Niveau ist unser klarer Anspruch und dies zeigen wir Tag für Tag erfolgreich.

Ein zentraler Baustein dieses Erfolgs ist die fortwährende und gezielte Weiterbildung aller Mitarbeiter.
Neben dem selbstverständlichen täglichen Training on the Job in kleinen leistungsstarken Teams, haben wir bei der ICANS ein ausgewogenes Programm zusammengestellt:

  • Großes und immer aktuelles Angebot an Büchern und Fachzeitschriften
  • Wöchentliche Code-Reviews
  • Regelmäßige Vorträge für alle Mitarbeiter durch interne und externe Referenten
  • Inhouse-Workshops wann immer es gilt gezielt Wissen aufzubauen
  • Regelmäßige Besuche von Konferenzen
  • Zertifizierungen

Was haben wir 2011 konkret gemacht?

First Fridays – 2011:

  • Monitoring Zabbix
  • Website Persuasion
  • MySQL Performance
  • ECF – Education Community Framework
  • Datenanalyse und Prognose R
  • Javascript GUI Framework Ext JS 4.0
  • Mobile App „SHC Trainer“
  • IDE Battle
  • Social Network Analysis
  • Realtime WebApps mit Node.js
  • Hochlastseiten am Beispiel von stern.de
  • RabbitMQ bzw. Messaging Systemen

Workshops – 2011:

  • Aktuelle Herausforderungen in der SoftwareentwicklungArne Blankert, Sebastian Bergmann, Stefan Priebsch von thePHP.cc
  • Analytics & Bigdata (Symfony 2, Thrift, Hadoop, …) – Technologie-Review - David Zülke von Bitextender
  • Architekturdokumentation - Review - Stefan Toth von oose Innovative
  • Architekturvision & Frameworks - Arne Blankert, Sebastian Bergmann, Stefan Priebsch von thePHP.cc
  • Code-Review unserer Symfony 2 Bundles - Johannes Schmitt
  • Continuous Integration - Manuel Pichler von Qafoo
  • Pair-Programming - Holger Bohlmann von it-agile
  • Pentration-Testing unserer Web-Technologie - RedTeam
  • Security-Code-Review unseres aktuellen Frameworks - Arne Blankert thePHP.cc
  • Skalierbare High-Performance-Anwendungen - David Zülke von Bitextender
  • Softwaredesign mit .Net - Ralf Westphal
  •  Softwarearchitektur – Lebendiger Entwurf mit Methode - Stefan Toth von oose
  • ZABBIX Training - Rihards Olups von Zabbix SIA

Besuchte Konferenzen – 2011:

Zertifizierungen – 2011:

 

Was denken unsere Mitarbeiter darüber?

http://www.kununu.com/de/all/de/in/icans/karriere

Wie wird 2012 aussehen?

Unser Weiterbildungsprogramm hat sich als sehr erfolgreich erwiesen, so dass wir es konsequent fortsetzen und erweitern werden.
Dieses Jahr werden wir zusätzlich stärker den Dialog nach außen suchen, um auf diesem Wege neue spannende Impulse zu bekommen und die Fachwelt an unserer Expertise teilhaben zu lassen. So planen wir unter anderem:

  • Eigene Vorträge an Hochschulen und auf Konferenzen
  • Veröffentlichung von Artikeln in Fachzeitschriften
  • Aktivere Contribution zu Open-Source-Projekten
  • Veröffentlichung eigener Open-Source-Software
  • Herausfordernde Themen für Praktika, Bachelor- u. Master-Thesis, sowie ggf. Promotionen
Veröffentlicht unter Insights, Workshops | Kommentare deaktiviert

Passion & The Request Pulse

We at ICANS believe that we can only deliver high performance continuously, by working in a passionate team of very smart, skilled and result-oriented individuals.

You may have already read this quote somewhere else on our home page. And although the above is the truth, the whole truth and nothing but the truth, I always feel kind of uncomfortable in writing such things, as it potentially sounds like ordinary marketing bs. Additionally it is bound to be very subjective, which makes such a statement even more questionable.

Probably giving real world examples is one good way to make such statements more tangible.

So today I’ll try to make this statement more tangible by giving you an example – I just experienced last night – what “being passionate” means to me:

Bjoern (Team Leader R&D) had a neat idea on how to make a request better observable throughout all (sub)-systems of our platform services. So far nothing too spectacular, as we are a team of very smart and skilled individuals, having neat ideas all the time ;)
But even though Bjoern didn’t expect this idea to be implemented in the near future, he went the extra mile after a hard working day, drafting his idea in a way someone else could easily catch up at some appropriate time in the future. That’s passion to me!

 

Still not interested in my marketing bs? Maybe Bjoern’s draft concept is of interest to you:

Brain Dump: The Request Pulse

The Idea

The Request Pulse is a concept, which allows us to observe how a request spreads within our system. The request does not necessarily have to be a HTTP request, it could also be the execution of a cron job or something like that.

The subsystem that receives the initial request generates the Pulse. It then attaches this Pulse to all sub-requests it makes to other systems.
All subsequent subsystems will have to do the same.

Since the Pulse propagates to all subsystems, we can add the Pulse to log events or messages as well.

Some possible applications of this concept would be

  • Trace an error that occurred in a remote subsystem back to its initial HTTP request on the reverse proxy
  • Group subsequent HTTP requests of AJAX calls together with their main request
  • Detect unexpected behavior changes in a running system (“Usually the processing of this kind of request results in these event, but now it doesn’t”)

Some Scenarios

An Error Occurs

The following scenario shows a setup where all components also reside on a dedicated machine.
The client requests article X, which he may not access.
This should lead in displaying the fallback article Y, but actually leads to an error.
Which gets bubbled up to the client as a 404.
Some interesting events (including all errors) are sent to the Logging Service.

 

Since all subsystems “know” the Pulse, they can include it in the events, which are passed to the Logging Service. This allows us to observe:

  • that the error in Content Repository while fetching Article Y was preceded by access denial, while trying to access Article X
  • all events occurred while processing “GET /article/X” in combination with all the information, we have about the client
  • etc.

AJAX calls

In the following scenario

  • the client requests a page X
  • the response includes
    • an element, which gets filled with some additional big data by an AJAX call onLoad
    • an element, which calls some statistics service, which includes some data about the users mouse movement in the first X seconds
    • the Pulse ID
  • the browser then requests the additional data Z including the PulseID
  • and makes the statistics call including the PulseID
    Again, the interesting events get sent to the Logging Service.

 

In addition to the observations above, we can group the requests for X and Z and the statistics call as one logical request by using the PulseID.

Some additional words

While both examples are not necessarily designed as one might design it in real life, they show how this method can be used to trace back errors and observe such flows without the need to pass down all information about the various clients to the subsystem where the point of interest resides.

Some notes (work in progress)

The Pulse consists of

  • id := a (very probably) unique id, e.g. uuid
  • timestamp := now in nanos
  • trace := a list of the subsystems the Pulse has passed

Implementation note to self: It could be registered as a “global”/Singleton/registered object in the scope of the request and has to actually be passed as parameter only when doing subsequent requests (in HTTP header or whatever).

Note to self: It must be possible to disable / enable the Pulse. A missing Pulse must not lead to erroneous behavior.

Veröffentlicht unter Brain Dump, Insights | 1 Kommentar