Aspects such as how those components are packaged (e.g. If you're using a language like Java or C#, the simplest way to think of a component is that it's a collection of implementation classes behind an interface. The word "component" is a hugely overloaded term in the software development industry, but in this context a component is a grouping of related functionality encapsulated behind a well-defined interface. Shell script: A single shell script written in Bash, etc.Ī container is essentially a context or boundary inside which some code is executed or some data is stored.Īnd each container is a separately deployable/runnable thing or runtime environment, typically (but not always) running in its own process space.īecause of this, communication between containers typically takes the form of an inter-process communication.File system: A full local file system or a portion of a larger networked file system (e.g.Amazon S3, Microsoft Azure Blob Storage, etc) or content delivery network (e.g. Blob or content store: A blob store (e.g.Database: A schema or database in a relational database management system, document store, graph database, etc such as MySQL, Microsoft SQL Server, Oracle Database, MongoDB, Riak, Cassandra, Neo4j, etc.Serverless function: A single serverless function (e.g."public static void main") application, a batch process, etc. Server-side console application: A standalone (e.g.Mobile app: An Apple iOS app, an Android app, a Microsoft Windows Phone app, etc.Client-side desktop application: A Windows desktop application written using WPF, an OS X desktop application written using Objective-C, a cross-platform desktop application written using JavaFX, etc.Client-side web application: A JavaScript application running in a web browser using Angular, Backbone.JS, jQuery, etc.Server-side web application: A Java EE web application running on Apache Tomcat, an ASP.NET MVC application running on Microsoft IIS, a Ruby on Rails application running on WEBrick, a Node.js application, etc.In real terms, a container is something like: A container is something that needs toīe running in order for the overall software system to work. Not Docker! In the C4 model, a container represents an application or a data store. It may also be the case that everything inside the boundary of a software system is deployed at the same time. In many cases, the boundary of a software system will correspond to the boundary of a single team. Perhaps the code for that software system resides in a single source code repository, and anybody on the team is entitled to modify it. One way to think about it is that a software system is something a single software development team is building, owns, has responsibility for, and can see the internal implementation details of. Unfortunately the term "software system" is the hardest of the C4 model abstractions to define,Īnd this isn't helped by the fact that each organisation will also have their own terminology for describing the same thing, typically using terms such as "application", "product", "service", etc. This includes the software system you are modelling, and the other software systems upon which your software system depends (or vice versa). actors, roles, personas, etc).Ī software system is the highest level of abstraction and describes something that delivers value to its users, whether they are human or not. Which in turn are implemented by one or more code elements (classes, interfaces, objects, functions, etc).Īnd people may use the software systems that we build.Ī person represents one of the human users of your software system (e.g. In order to create these maps of your code, we first need a common set of abstractions to create a ubiquitous language that we can use to describe the static structure of a software system.Ī software system is made up of one or more containers (applications and data stores),Įach of which contains one or more components,
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |