Microservices — a distinctive method of developing software systems and a departure from traditional, monolithic models — has grown in popularity in recent years. It has quickly become the preferred method as it breaks down a businesses’ applications into loosely-tethered, modular services. This is an ideal structure for companies that have to enable support for a range of platforms and devices, including anything from web and mobile platforms, to wearables and other IoT-connected devices.
The increased level of scalability offered by microservices enables flexibility, much better re-use of code, continuous delivery/deployment, better quality and maintenance. It is structures as a collection of services that are -
Microservices architectures can play a key role in enabling digital transformation, especially for organizations seeking to modernize legacy applications and codebases. Projects that are designed in Microservices architecture can and should be planned in the most agile way and can support CI/CD.
Cloud computing is the term for hosted services delivery over the internet. It enables companies to use resources like storage, virtual machines (VM), or even application as a utility without building it in house. It has many benefits like - Self-service for end users (end users can spin up compute resources for on demand), Elasticity - Companies can scale up and scale down again as demands decrease, Pay per use - Enabling users to pay only for the resources and workloads they use, Workload resilience - Cloud service providers often implement redundant resources to ensure resilient.
Top providers that are known and compete: Azure (Microsoft), Google cloud, AWS (amazon)
In the aspect of project management and development management cloud services make some of the managerial aspects much simpler as there is no HW dependency and environments for tests can be easily created when needed, in addition as part of the cloud service there is a reach offering of applications and services developers can use that simplify and shorten development significantly.
IoT encourages companies to rethink the ways they approach their businesses, industries and markets and gives them the technology to significantly uplift their business strategies.
It refers to the devices around the world that are now connected to the internet, collect and share data. Thanks to advanced processors and wireless networks, it's possible to turn anything to be part of the IoT. This adds a level of digital intelligence to devices that would be otherwise dumb. IoT evolved from machine-to-machine (M2M) communication, i.e., machines connecting to each other via a network without human interaction.
An IoT ecosystem is built of web-enabled smart devices that use embedded processors, sensors and communication hardware to collect, send and act on data they acquire from their environments. IoT devices share the data through IoT gateway or other edge device where data is either sent to the cloud to be analyzed or analyzed locally. The devices do most of the work without human intervention, although people can interact with the devices -- for instance, to set them up, give them instructions or access the data.
A simple exercise we used once in a workshop was to ask the participants to think about any device in their home and how “intelligence” and data can make it a smart IOT device – from refrigerators that order milk directly when it runs out to a washing machine that text you a reminder when you have a pile of laundry, our world is full of IOT possibilities.
Open source software is software whose source code has been made publicly available by its copyright holder. Under a true open source license, the software is developed collaboratively, and other programmers can look at, modify, or use the code their own purposes. This “full” open source model is often referred to as FOSS (free and open source software). A variant of open source is “source available” which means that no permission is granted to modify or otherwise use the code, but that it is available for inspection.
By placing an open source license on an original work, a person or organization agrees to:
Why is it important to know?
The use of many open source tools and applications becomes very common and changes the industry dramatically.
From technical perspective – technology, applications and tools develop much faster as the community contributes to this growth, from culture perspective – open source is considered not only a technical concept but also a culture of openness, sharing, empowerment, communication.
Obviously, it brings with it completely new aspects that need to be thought and managed like – legal, security, methodology and more, but no doubt it is here to stay for the near and probably far future while more and more software projects adopt this concept.
Gartner has identified Event Driven Architecture as one of the top 10 technology trends for 2018. There are some very good reasons for this. “Events” occur in every business domain, architectures become more loosely couples (remember microservices) and there need to be a mechanism to sync data and information across components of the system.
For most applications, the way to make microservices work and to manage distributed data successfully is to adopt an event-driven architecture. The concept of an event-driven system is that it should publish to “everyone” that is interested to be notified of these events and could benefit from knowing about it. They can be processed asynchronously.
An event, representing something that has happened to which other components may react, should generally be distributed widely. The service raising the event doesn’t know its consumers – it simply makes the event available. It doesn’t expect a confirmation from anyone that the event has been “handled”.
Publish/subscribe is another way to describe event-oriented messaging. In the publish/subscribe paradigm, there are publishers and subscribers. A publisher does not need to know anything about the subscribers of the information they are publishing to other than that they are entitled to receive the information. Similarly, the subscriber does not need to know anything about the publisher other `than that they are authenticated to be a legitimate publisher.
Digital architecture summarizes many of the above technologies and concepts into it. It mainly refers to building an architecture that supports digital channels and multi-channel experience. It is relevant for organizations that enter digital transformation, but not only, each organization that starts opening digital channels needs to adapt to it.
There are specific principles for digital architecture: