Showing posts with label patterns. Show all posts
Showing posts with label patterns. Show all posts

12/20/19

Architecting the Ecosystem: 5 Challenges for 2020 and beyond

For years, organizations are experiencing increasing pressure to adapt faster, and at the same time: to work more efficiently (and cheaper).

ICT developments play a dual role in this: on the one hand, new technological developments facilitate organizations to change faster (reorganize, innovate, expand) and work more efficiently, on the other hand, the same developments create a bigger playing field and offer more opportunities to put pressure on the same organizations.

As always, the challenges are met by combining (integrating, linking) IT systems to provide more functionality and splitting systems into smaller pieces, thereby creating a greater degree of flexibility. With these developments, ICT equipment, software and services are becoming increasingly more complex and more extensive. Large ICT ecosystems emerge in which the manageability of development and management is becoming an ever greater challenge. To cope with this, ICT systems are supported with platforms, frameworks and tools, and broad-based industry standards and patterns are adopted.

This evolution is nothing new and has been taking place for decades. In the last decade, however, the speed of change and the associated challenges to cope with it have greatly increased.
The following recent developments have made a major contribution to this:

  • Micro services: applications are split up, making the structure (through reuse of services) and behavior of applications (better scalability) more flexible;
  • Cloud: where applications are placed in platforms so that these applications can be managed more effectively as a group;
  • Agile / SCRUM / SAFe: where development organizations and development activities are split up (schedules and products) in order to be able to develop products and services faster,  more efficiently and effectively;
  • IoT: over the past few years, in addition to smartphones, laptops and tablets, it causes an explosive expansion of the IT ecosystem by adding millions of "smart" devices.

These developments should make it possible to realize a flexible ecosystem of distributed components that in a continuous stream of small adjustments is continuously optimally aligned with the constant and faster changing needs of organizations and individuals.
However, the above also causes some "extra challenges" ...

Challenges for the architecture and the role of the architect

An architect provides insight into the structure and behavior of ecosystems and processes and determines rules according to which these systems are worked on.

Challenge 1: massive increase in boundaries and data streams

The increasing size of ICT ecosystems introduces many more boundaries (in the broadest sense of the word) that must be controlled. Cross-cutting concerns (e.g., maintainability, adaptability, usability) and non-functional requirements (e.g., security, synchronization) must now be managed across entire ecosystems instead of relatively controllable monoliths. These ecosystems also have a highly dynamic character; both the structure and the behavior are constantly changing under the influence of the development and use of ever changing equipment, software and services.

This increasing degree of size, dynamics and complexity makes obtaining the insight that the architect must offer more difficult.

Also, the massive expansion of the ecosystem with devices (IoT devices that generate lots of sensor data) and protocols like WebSocket realizing realtime and two-way communication between server and client massively increases the amount of data that is generated, stored and streamed in the ecosystem. The continuous increase in bandwidth (e.g. 5G) makes data transport easier and faster, and new applications possible.

Challenge 2: additional questions

In addition, the architect is required to answer new questions, well substantiated. Questions on the costs, efficiency and effectiveness of future scenarios (e.g. implementation of new versions of software, new user stories, impact of new regulations etc.) in complex and dynamic ecosystems are becoming increasingly important. After all: the aforementioned pressure from the organizations (business) to be able to deliver faster and cheaper is ever increasing.

Challenge 3: outdated techniques and tools

The architect uses models and views to gain and provide insight into the IT ecosystem. However, the standards, techniques and tools used for this were devised in a time when the architecture was not yet extensive, dynamic and complex to the present extent. Also, nowadays, more different expert architects and designers play a role; for example for UX, infrastructure, business, and software. These experts use models and techniques that work effectively and efficiently for specific target groups (stakeholders), but often do not connect with each other. This makes it more difficult to realize a complete and coherent model of the entire architecture, which also makes it difficult to understand architectures in the IT ecosystem. In addition, the frequency with which changes are implemented has increased sharply, which makes updating models a greater challenge.

It is therefore increasingly difficult to obtain and provide insight into the entire ecosystem; the insight becomes more limited. And limited insight means a limited degree to which the architecture of an ecosystem can be sufficiently aligned with the goals set for it.

Challenge 4: work silos

Furthermore, the Agile / SCRUM way of working results in a division of work over several small work silos in which the influence of the architect is more limited than in classic "waterfall" sections. Effective and efficient coordination between these silos therefore costs the architect more effort, so that regulating and guiding to achieve an effective and efficient architecture and maintaining it as well also takes more effort.

Challenge 5: getting insight in both private and work domains

The User eXperience (UX) architect focuses specifically on usability of ICT for end users.

This is a particular important expert-architect since the ecosystem of devices, processes and software is now no longer limited to the domain of organizations, but has been expanded with the ecosystem of devices, processes and software that is outside the sphere of influence of organizations. The DCX architect must also have insight into the private and working environment (domains) of the individual, which also partly overlap each other.

The way of life has changed considerably in recent decades. Both private and professional life has become more flexible and dynamic and exerts increasing pressure on the individual. Work and private activities and time regularly overlap and long-term focus on tasks is becoming increasingly difficult. Tasks are therefore increasingly performed in a fragmented manner (micro tasks, micro productivity).

The context in which the individual performs tasks also varies more frequently and to a greater extent than before; he now uses different and rapidly changing devices and applications, from different locations, at any time of the day, and under different circumstances (e.g. online, offline).

In addition, the behavior of the individual has also changed considerably in recent decades. Hardware and software have become fashion-sensitive and participating in trends or, on the contrary, wanting to be “different” by choosing specific equipment and apps has become commonplace.

The behavior of the individual is also influenced by the services and IT ecosystems that he uses. Through structural personalization and commercialization, information bubbles and echo chambers can arise in which the information and services provided to the individual are aligned with earlier behavior and his behavior is thus confirmed more often than is inspired by other insights. Services can, as a kind of government, influence the behavior of the individual.

Both the behavior of the end user, the services he uses and the context in which he performs tasks in both private and work domains and the way in which he performs tasks play a decisive role in the effectiveness and efficiency of services offered to users by organizations. Insight into this is therefore crucial for the work of the UX architect.

How can architects deal with these challenges?

The basis for a good architecture is insight; in functionality, structure and behavior of eco systems. Models that the different specialist architects and designers use will have to be aligned so that a consistent model is formed from which this insight can be obtained. The current method of modeling can be used in part, but the size, complexity and dynamics of these ecosystems requires that modeling should be done in a more comprehensive and efficient manner.

Consolidating models, modelling dynamics and calculating constructions

Static models (the "blocks and arrows", sketches, overviews, etc.) will have to be incorporated into consolidated and standardized models from which views for all expert architects and stakeholders are derived. And insight into the dynamics will play a major role in this, for example in the form of simulations. The concept of "Digital Twins", in which models are expanded with digital replicas of entities that exist in the physical world, offers possibilities to implement these simulations. All the domains involved, both the own organization and the domains in which the individual operates, must be involved.

This way, insight into the architecture and influences on this architecture can be obtained more efficiently and efficiently. This facilitates understanding and communication between the various architects and stakeholders. After all, from a shared simulation across all relevant domains (dynamic) views can be defined in the format that best fits the perception of the stakeholders and expert architects involved. The above-mentioned new questions posed to architects can also be better answered. Impact analyzes can be "calculated" and subsequently evaluated with actual measurements.

Use best practices & patterns

The fact that we have much less to do with monoliths and more with an ecosystem of ICT components (distributed applications with lots more boundaries) makes standardized implementation of solutions for cross-cutting concerns more of a challenge. By using best practices and patterns, thus using solution blueprints standardizing solutions for parts of the ecosystem, this challenge can be met. An additional advantage of this is that, with the use of patterns, the associated problem areas are also better understood.

Keeping up with Agile/SCRUM

Effective and efficient application of Agile / SCRUM stands or falls with sufficient adoption thereof throughout the organization and sufficient involvement of architecture, architects, support services (e.g. for infrastructure) and stakeholders. Although frameworks such as SAFe provide tools for tackling these challenges, they must be applied to a sufficient extent. In addition to adapting the organization and organizing processes, this also requires a different way of thinking: a cultural change. And cultural changes are generally more difficult to implement. Streamlining supporting processes, such as requesting environments (e.g. by applying self service), can in any case significantly reduce the workload of architects.

What remains a challenge is the force field between the interests of the business (which has a more direct influence on work in progress; implementation and documentation / communication) and working under architecture. Software development is becoming increasingly intertwined with business processes (development of services), as a result of which software development itself has actually become a business process itself in which architecture (medium and long term) is given less importance than the rapid realization of agility; the development of new products and services (short term).

Get a better and broader insight

Adding the user's private and work domain to the UX-architect's focus area makes insight more challenging; certainly with the dynamics of the ICT ecosystem, user behavior and context. The use of simulations in those domains is even more important here to give the UX architect the insight with which he can devise efficient and effective solutions.

Because the UX architect has to deal with different domains, both the private and the work domain, the UX architect must have broad knowledge base. His expertise actually includes the expertise of various expert architects; among others in the areas of User Experience (UX), platforms (CMS, business systems), integration and devices (e.g. mobile, IoT).

The models and techniques used in these different areas of expertise will have to be aligned so that a holistic view of solution ecosystems can be obtained. This coordination can already take place initially by making use of existing modeling standards that naturally already offer a joint insight to the various expert architects. An example of this are semantic information models that offer building blocks for epics and user stories as well as for technical data models.

Summarized… and concluding

The ever increasing pressure to deliver products and services quickly, effectively and efficiently in an increasingly complex and dynamic ecosystem of devices, services and users gives the architect some major challenges:

  • Challenge 1: massive increase in boundaries and data streams
  • Challenge 2: additional questions
  • Challenge 3: outdated techniques and tools
  • Challenge 4: work silos
  • Challenge 5: getting insight in both private and work domains

ICT / automation is still a relatively young discipline. Disciplines like architectural engineering, civil engineering, hydraulic engineering and industrial engineering are much more mature when it comes to working under architecture, standards for development and dealing with changes. As ICT architects, we can learn a lot from these disciplines. The techniques used therein such as modeling, calculating (strength theory, capacity planning, simulation, logistics, etc.) and simulation can be a true source of inspiration for us.

8/1/18

This week's Wednesday Evening Training: continuing our 3d and IoT projects and a bit of Windows programming

This Wednesday Evening Training, we continued our exploration of IoT and 3D technologies and learned about Windows programming.

Also: a special welcome to our guests from Siemens Germany: Florian, Alexander and Achim.


Windows DIB Buffer and Sound Buffer

First we had a nice demo and code walkthrough of our colleague Quincy Jacobs, who has experimented with the Windows DIB Buffer and Sound Buffer using good old C++/C. This ignited a lively discussion on wave and sound generation and techniques used for that. It took me right back to the era of home computers, in which I experimented a lot with the Commodore 64's SID (Sound Interface Device) programmable sound generator chip. Revolutionary for it's time (see also: https://en.wikipedia.org/wiki/MOS_Technology_SID).

BabylonJS

Next, I gave an update on my BabylonJS Archimate model project. This week, I had implemented an Observer to keep the Archimate (JavaScript Object) model in sync with the BabylonJS model. This enables the 3D model of the architecture being updated at runtime. I abandoned the proxy approach that I mentioned last week, since this is not supported by IE (in Edge it is supported) and IMHO it's too early to exclude IE. Instead I used a classic Observer implementation in JavaScript. We did a code walkthrough and discussed application of the Observer- and Factory pattern in general and in JavaScript. There is interest to plan a separate knowledge session on BabylonJS and WebGL. BabylonJS is based on WebGL (Web Graphics Library), which is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins.

To be continued...

RFID (Radio-Frequency Identification)

As promised last week, we took a look at RFID technology. Roughly speaking: using a reader/writer  your application can interact with RFID tags (e.g. in your security card). Your RFID tag provides a unique id to your application, which you can use as a key in your database. In a nutshell this is the basis of access and registration systems. At very low costs, a few Euro's actually, you can have a lot of fun in your IoT project! See the links below for resources on this.
We could use RFID labels and a scanner for building an interactive toy for young children (see my last week's post on this). Based on RFID and Lilypad Arduino technology we should be able to create some kind of easily foldable and transportable carpet on which you can place all kinds of tagged objects and interact with them using an sowed in Lilypad Arduino.

Anyway... a lot to learn!

Further reading

Do you want to read more on the topics in this post? Here are some links...

RFID: https://en.wikipedia.org/wiki/Radio-frequency_identification
Tutorial 12 for Arduino: RFID Card Reading: https://www.youtube.com/watch?v=gIlSLwcbeTU
What is RFID? How RFID works? RFID Explained in Detail: https://www.youtube.com/watch?v=Ukfpq71BoMo
MF522 RFID Write data to a tag: https://www.youtube.com/watch?reload=9&v=uihjXyMuqMY
RFID Programming Made Simple and Cheap: https://www.developer.com/net/article.php/3628811/RFID-Programming-Made-Simple-and-Cheap.htm
BabylonJS, see my previous 19th july post: https://hansrontheweb.blogspot.com/2018/07/this-weeks-wednesday-evening-training_19.html
Understand the Factory Design Pattern in plain javascript (one of the many articles on this): https://medium.com/front-end-hacking/understand-the-factory-design-pattern-in-plain-javascript-20b348c832bd
The Observer Pattern in JavaScript explained: https://pawelgrzybek.com/the-observer-pattern-in-javascript-explained/
WebGL: https://en.wikipedia.org/wiki/WebGL

Past Wednesday Evening Trainings

You'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

Next Wednesday Evening Training

Next Wednesday Evening Training, we'll take a deep dive into Micro Services. We'll discuss this from both an architectural point of view and a (Java) software engineering point of view. Demo's will be shown, code walkthroughs will be done and hopefully we'll have yet again a lively discussion!

Experiment, learn and have fun!


#capgemini #werkenbijcapgemini #lifeatcapgemini #wednesdayeveningtraining #3d #virtualreality #unity3d #babylonjs #arduino #rfid #iot #internetofthings #archimate #archi #patterns #windowsprogramming #c #c++

6/28/18

This week's Wednesday Evening Training: Angular state management with ngrx/store, introduction to state management pattern, project walkthrough and handson labs

This wednesday evening, Wouter de Bruin, Roel van de Grint and I gave an introduction to Angular Application State Management using Redux and NgRx/Store.



So what are we talking about anyway?

Nowadays, the client part of web applications has become much more complex than the relative light weight websites in the old days. They have become Single Page Applications in which multiple independent actors all compete in updating the model in parallel. Keeping track of the actual state of an application and having all actions be done in a predictable order has become increasingly difficult and let's the code become dangerously difficult to manage.


NgRx/Store and comparable mechanisms offer ways to manage this "State" in an orderly fasion and coordinate actions in such way that the applications' behaviour stays predictable. Actors can request a state change and subscrive to state changes. Having this mechanism also offers a good opportunity for logging the applications' behaviour by keeping track all states in a history. And if the application's behaviour is not influenced by other processes' behaviour, you could even use this history to restore previous states and "rewind" and "replay" the application's behaviour.

In a nutshell: State Management offers manageability and more and solutions like NgRx/Store helps you implementing this in an efficient manner.


This evening, we were given a lot of code walkthroughs in some nice examples. Wouter and Roel prepared a set of handson labs for us that gave us plenty opportunity for excercise and experimentation. There was also plenty of room for Q&A and to discuss other technologies involved. With NgRx/Store, a set of tools for testing and monitoring is also offered. For Chrome, for example, there is a nice plugin available.

We will definitely have a sequel to this session, since it's quite an important topic in client side software development.

Thanks Wouter and Roel, for sharing your knowledge with us!


Further reading

Do you want to read more on the topics? Here are some links...

Redux development tools: https://github.com/zalmoxisus/redux-devtools-extension
Chrome development plugin for Redux: https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=en
NgRx Developer Tools - Watch the Time-Travelling Debugger In Action(video): https://www.youtube.com/watch?v=70ojPxMA7Ig
Hacker Way: Rethinking Web App Development at Facebook (solving the original problem) (video): https://www.youtube.com/watch?reload=9&v=nYkdrAPrdcw&feature=youtu.be&list=PLb0IAmt7-GS188xDYE-u1ShQmFFGbrk0v&t=1075
Angular Service Layers: Redux, RxJs and Ngrx Store - When to Use a Store And Why? https://blog.angular-university.io/angular-2-redux-ngrx-rxjs/
Ngrx Store - An Architecture Guide: https://blog.angular-university.io/angular-ngrx-store-and-effects-crash-course/
ngrx/platform - Monorepo for ngrx codebase: https://github.com/ngrx/platform


Next week

In next week's Wednesday Evening Training, we'll be continuing our handson labs and experiments using WebAssembly with our colleague Hans Harts.


Past Wednesday Evening Trainings

You'll find post of previous sessions in LinkedIn as well, see: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining



#capgemini #werkenbijcapgemini #lifeatcapgemini #wednesdayeveningtraining #angular #ngrx #patterns

3/21/18

This week's Wednesday Evening Training: a lot of Pi and some Witty Cloud with patterns

We continued our labs and projects this evening. We got some interesting demo's of running projects, e.g. a sensor network in which temperature and moisture data is exhanged between Pi's, a Witty Cloud Board, through various channels, including mail. This way, we're able to switch on/off devices remotely, guaranteed. Next step: come up with a practical application for this ;).
Also this evening: a lecture on basic design patterns. No tools, a whiteboard and a marker only.

Next week, we'll dive into Procedural Content Generation (used by graphical tools and game engines).

#werkenbijcapgemini #lifeatcapgemini #capgemini #wednesdayeveningtraining #raspberrypi #pi #iot #softwareengineering #patterns