January 19, 2012 by Michael
Hi there,
This past Monday I gave a talk at the Java Student User Group Austria (
jsug.at). I seldom had such a lively, enthusiastic, interested and curious crowd as an audience. In was fantastic! I covered 6 topics that are a must-be-considered before you start development. There are more, but I picked those that seemed most important for me:
- Build scalability into your design – it allows you to start small and adapt as load grows
- Short transactions keep a system scalable – think if strategies to keep your transactions short
- Asynchronous processing – keep threads short, and prevent peaks that paralyze your system
- Establish caching as pattern early in the project
- Pay attention to your data access, e.g. avoid chatty transactions, query tuning, query optimization, etc.
- It’s never just the software alone, i.e. take a holistic view at scalability
Regards,
Michael
Copyright © 2010-2012 Michael Pichler
Posted in Architectural Patterns, Developing Architectures, j2ee, java, jee, Knowledge Nuggets, Lesson Learned, Software Architecture, software design, software engineering, Technical Leadership | Tagged it architecture scalability softwareengineering leadership lessonslearned j2ee jee .net softwaredesign, itavienna ita_vienna community | Leave a Comment »
January 19, 2012 by Michael
This fits well to what we talked about in our first IT Architecture Circle meeting. We have heard about automation and industrialization, by way of (also internal) standardization. This demo shows how we can imagine what the yesterday presented concept looks like (and a possible glimpse at the future of computing…).
Click here to view video
Click here to view original post
Regards,
Michael
Copyright © 2010-2012 Michael Pichler
Posted in Deployment Architectures, Developing Architectures, Software Architecture, Technical Leadership | Tagged cloudcomputing itavienna ita_vienna itarchitectures itarchitects community, community | Leave a Comment »
December 20, 2011 by Michael
A colleague of mine – Gottfried Luef – and I - Michael Pichler – kicked off a Community for IT Architects in Vienna, Austria this past week. The community’s name is “IT Architecture Circle Vienna“. The preparation took most of my time over the past few months, which is why I didn’t post here. It was a great success! We managed to have 30 attendees with this first event.
Our topic for this first meeting was Cloud Computing. We picked it as we didn’t know exactly who would attend, and what the attendees might be interested in. Generally our speaker gave
- an introduction to cloud computing, described
- how you can find out whether or not cloud is of interest to you, and
- gave a few show-cases.
You can download the slides from the community blog (see below).
Our focus will be subjects for IT Architects. We are planning to meet on a regular basis and talk about subjects that are of interest to the community. Anything will be of interest, be it now subjects for Enterprise Architects of subjects for Software Architects.
Our Blog is at: https://www.ibm.com/developerworks/mydeveloperworks/blogs/itavienna/?lang=en . Our Twitter channel is @ita_vienna . We are planning on posting on a regular basis.
Feel free to join us if you happen to live in Vienna, and are interested in IT Architecture. We are going to post relevant information to the blog as well as the twitter channel.
Regards,
Michael
Posted in archtitecture, Software Architecture, software design, software engineering, Technical Leadership | Tagged blog, community, itarchitects, itarchitecture, itarchitecturecirclevienna, itarchitekten, itarchitektur, itavienna, ita_vienna, vienna, wien | Leave a Comment »
August 23, 2011 by Michael
I published on article on evaluating response time measurements for the September 2011 issue of “Javamagazin”. It is in German and available in print only (for reference, please follow the link http://it-republik.de/jaxenter/java-magazin-ausgaben/Enterprise-Javascript-000463.html).
Often we start performance improvements much too late in projects. This article explains how important it is to measure the response times of your software – already throughout development, and how you can create meaningful information out of the data gathered. In particular this means:
- Establishing clusters of services/functions with excellent, very good, good and bad performance
- Recognizing trends of potentially bad performance, i.e. services/functions that are performing well but show signs of performance issues
- I packed the entire approach into a six repeatable steps, which can – most importantly – also get automated if you wish – for example – to embed them into your continuous build and deployment process
Copyright © 2011 Michael Pichler
Posted in Deployment Architectures, j2ee, java, jee, Software Architecture, software design, software engineering | Tagged java, measurements, metrics, performance, software | 2 Comments »
Apache Derby can be integrated with Google Web Toolkit. It requires, however, a few tricks. As it wasn’t all that straight forward, and included some time-consuming hunting-around on the Internet, I thought I would publish the troubles ( java.lang.ClassNotFoundException, java.lang.NoClassDefFoundError: java.io.FileOutputStream, and java.lang.NoSuchMethodError: org.mortbay.thread.Timeout.(Ljava/lang/Object;)V)) and answers all in once place. I hope it helps! Continue Reading »
Posted in Software Architecture, Knowledge Nuggets, software engineering, software design, Lesson Learned | Tagged java, apache derby, google web toolkit, gwt, exceptions, eclipse | 2 Comments »
This article provides an introduction to component modeling beyond the UML notation. It describes how I typically do component modeling, combining the non-functional and functional aspects of software to be built. Continue Reading »
Posted in Architectural Patterns, Architecture Diagrams, Developing Architectures, Software Architecture, software design, software engineering | Tagged architectural design, Architectural Patterns, best practice, non-functional requirements, Software Architecture, software design, software engineering, software modeling, uml | 4 Comments »
I have come to realize that successful (typical) Solution Architectures rely on only a handful of areas (let’s call them corner-stones) that need to be defined. Examples are: Non-Functional Requirements, Architectural Decisions, etc. Naturally, those areas need to be defined and thought about that much more carefully… Continue Reading »
Posted in Architectural Patterns, Developing Architectures, Documenting Architectures, j2ee, jee, Software Architecture, software design, software engineering, Technical Leadership | Tagged architectural design, architectural design decisions, Architectural Patterns, architecture, architecture overview, architecture overview diagram, best practice, deployment diagram, j2ee, non-functional requirements, operational model, Software Architecture, software design, software engineering, system context, technical leadership, technology | Leave a Comment »
Did you ever want to become an IT Architect, and have been wondering what it is that Architects actually do? I have been trying to highlight what’s important from my point of view. I have tried to highlight those areas that are – in my opinion – important but definitely not key concerns for architects… Continue Reading »
Posted in Software Architecture, Technical Leadership | Tagged architect, architecture, Software Architecture, software engineering, technical leadership | 1 Comment »
I wanted to spend some time reflecting on the past six months of blogging on Software Architecture and Design. I started my blog because I wanted to share some of the things I have learned. Quite frankly, a lot of things surprised me with blogging. On one hand I imagined it to be more difficult to develop content that draws. On the other hand I imagined it to be easier… Continue Reading »
Posted in Software Architecture, Technical Leadership | Tagged blogging, information technology, technology, thoughts, value | Leave a Comment »
Read this article if you want to learn how to layer software centric server-based system. This article is not geared towards a specific technology and the concepts presented can be applied to any type of server-centric architectures, such as J2EE or .NET It does – however – have a focus on server-side processing such as web-based, rich-client or service-oriented architectures. Continue Reading »
Posted in Architectural Patterns, Architecture Diagrams, Developing Architectures, Documenting Architectures, Software Architecture | Tagged architectural design, architectural design decisions, Architectural Patterns, architecture, architecture overview, architecture overview diagram, best practice, documentation, how to, j2ee, java, software, Software Architecture, software design, software engineering, technology, technology development | 1 Comment »
This article describes a best practice for a layer diagram, showing a typical architecture for a server-centric application as can commonly be found in J2EE- or .NET-based Web, Service-oriented or Rich-Client applications. Continue Reading »
Posted in Architectural Patterns, Architecture Diagrams, Developing Architectures, Software Architecture | Tagged architectural design, architecture overview, best practice, how to, j2ee, java, Software Architecture, software design, software engineering, software modeling, technology, technology development, uml | Leave a Comment »
Read this knowledge nugget if you want to learn about horizontal scalability. Just like vertical scalability it is a term that is more or less clear. There are – however – different interpretations around… Continue Reading »
Posted in Architectural Patterns, Deployment Architectures, Developing Architectures, Knowledge Nuggets, Software Architecture | Tagged architectural design, architectural design decisions, Architectural Patterns, architecture, best practice, deployment diagram, infrastructure, j2ee, network diagram, non-functional requirements, software, Software Architecture, software design, software engineering, technology, technology development | Leave a Comment »
Read this knowledge nugget if you want to learn more about vertical scalability. It is a term that is more or less clear. From time to time you can – however – find different interpretations of it… Continue Reading »
Posted in Architectural Patterns, Developing Architectures, Documenting Architectures, Knowledge Nuggets, Software Architecture | Tagged architectural design, Architectural Patterns, architecture, architecture overview, best practice, deployment diagram, how to, j2ee, non-functional requirements, software, Software Architecture, software design, software engineering, technology, technology development | Leave a Comment »
There is one thought I have been carrying around for while and wanted to share. Read this if you are interested in how much documentation a software development project really needs. I am not religiously demanding it nor am I denying the need for documentation. There is a third answer… Continue Reading »
Posted in Developing Architectures, Documenting Architectures, Software Architecture | Tagged architecture overview, best practice, documentation, j2ee, Software Architecture, software design, software engineering, technical leadership, technology | Leave a Comment »
Read this Knowledge nugget if you want to learn what Requirements Traceability is, what the objective of requirements Traceability is, how it works and how you can do it. Continue Reading »
Posted in Developing Architectures, Knowledge Nuggets, Software Architecture | Tagged architectural design, architectural design decisions, functional requirements, how to, non-functional requirements, Software Architecture, software design, software engineering, technology, technology development | Leave a Comment »
Read this Knowledge nugget if you want to learn what a non-functional requirement is and how it relates to Software Engineering terminology. Continue Reading »
Posted in Knowledge Nuggets, Software Architecture | Tagged architecture, how to, non-functional requirements, software design, software engineering, technology, technology development | 1 Comment »
Read this Knowledge nugget if you want to learn how a functional requirement is defined and how it relates to Software Engineering terminology. Continue Reading »
Posted in Knowledge Nuggets, Software Architecture | Tagged functional requirements, how to, software design, software engineering, technology, technology development | Leave a Comment »
Read this article if you want to learn about the principles of clustering for a single-tier J2EE application. I know that clustering is a commonly found pattern in today’s IT world. I nevertheless wanted to cover it for those with less experience in a short entry as it is an essential pattern to know.
I outlined the objective, variations and commonly found patterns. After reading this article you should be able to distinguish between clustering and availability, know the advantages and disadvantages of clustering and be able to recognize the infrastructure impact a clustered application has. Continue Reading »
Posted in Architectural Patterns, Architecture Diagrams, Deployment Architectures, Software Architecture | Tagged architectural design, Architectural Patterns, architecture, architecture overview diagram, best practice, deployment diagram, how to, j2ee, java, network diagram, software, Software Architecture, software design, software engineering, technology, technology development | Leave a Comment »
April 27, 2010 by Michael
Read this knowledge nugget if you want to learn what a Tier is in Software Architecture and why you would use it. Continue Reading »
Posted in Architecture Diagrams, Knowledge Nuggets, Software Architecture | Tagged architecture overview, architecture overview diagram, how to, j2ee, java, software design, software engineering, technology, technology development | 2 Comments »
April 20, 2010 by Michael
Read this knowledge nugget if you want to learn what a layer is in Software Architecture, how you can use it, how the concept works and why you would want to use it. Continue Reading »
Posted in Architecture Diagrams, Knowledge Nuggets, Software Architecture | Tagged architecture overview, architecture overview diagram, how to, j2ee, java, software design, software engineering, technology, technology development | 2 Comments »
April 13, 2010 by Michael
In a previous article I have described the notation I am using for network diagrams in Software Architecture. This article describes an extensive sample diagram showing a possible solution with a large variety of different aspects. Read this article if you want to learn more about network diagrams in Software Architecture. Continue Reading »
Posted in Architecture Diagrams, Knowledge Nuggets, Software Architecture | Tagged architectural design, architecture overview, deployment diagram, how to, j2ee, network diagram, operational model, software design, technology | Leave a Comment »
Read this article if you want to learn how I construct network diagrams, the notation and how I put it together. While the notation itself can be put to a broader use, such as infrastructure architecture and others, it is specifically geared towards Software Architecture. Continue Reading »
Posted in Architecture Diagrams, Software Architecture | Tagged architecture overview diagram, deployment diagram, how to, j2ee, network diagram, Software Architecture, software design, technology, technology development | 3 Comments »
March 30, 2010 by Michael
Read this knowledge-nugget if you want to know what the term Reverse Proxy means, how it works and how it can be used. Further, I am going to explain how it relates to the term Proxy Server and what a Caching Reverse Proxy is.
Continue Reading »
Posted in Knowledge Nuggets, Software Architecture | Tagged architecture, deployment diagram, how to, infrastructure, it, operational model, software, technology | 1 Comment »
March 16, 2010 by Michael
Read this article if you want to learn how you can deploy a web-centric application on multiple nodes in a complex network infrastructure (with Internet zone, DMZ and Intranet zone). I outlined a number of alternative configurations across the different zones, including advantages and disadvantages.
This is also a commonly found and essential pattern in today’s IT world. It is an enhancement of the pattern “Single Node Deployment Configuration for Multi-Tier Network-Centric Software Applications” covered in a previous entry. Continue Reading »
Posted in Architectural Patterns, Software Architecture | Tagged architectural design, architecture, best practice, deployment diagram, how to, it, j2ee, network diagram, non-functional requirements, operational model, software, software engineering, technology, technology development | Leave a Comment »
Read this article if you want to earn how you can deploy a web-centric application on a single node in a complex network infrastructure (with Internet zone, DMZ and Intranet zone). I outlined a number of alternative configurations, including advantages and disadvantages.
This is a commonly found pattern in today’s IT world. I nevertheless wanted to cover it in a short entry as it is an essential pattern to know. Continue Reading »
Posted in Architectural Patterns, Software Architecture | Tagged architectural design, Architectural Patterns, architecture, best practice, deployment diagram, how to, it, j2ee, network diagram, operational model, software, software engineering, technology, technology development | Leave a Comment »
February 16, 2010 by Michael
Network diagrams have a specific aim and are often used for diagramming the infrastructure or operational view of a System Architecture. I – personally – find it a good starting point for developing architectures. The reason is that network diagrams are a handy “tool” to capture a very high-level view of a system and enable you to refine the System Architecture in subsequent iterations until you reach the level of detail you aimed for. Continue Reading »
Posted in Developing Architectures, Documenting Architectures, Software Architecture | Tagged architectural design, architecture, architecture overview, how to, it, j2ee, network diagram, non-functional requirements, operational model, software, software design, software engineering, technology, technology development | Leave a Comment »
February 4, 2010 by Michael
Read this article if you want to learn how Software Architectures can be documented. A multitude of tools, diagrams, thoughts and instructions can be found via the Internet. Often the “how” is put in before the “why” and “what”. In this article I want to address “which” artifacts you absolutely need to think about and “why”. Because the development of Software Architectures is not about tools and diagrams: it is about how the architecture can be documented – and presented – most efficiently as well as effectively. Continue Reading »
Posted in Developing Architectures, Documenting Architectures, Software Architecture | Tagged architectural design, architectural design decisions, architecture, architecture overview, component diagram, deployment diagram, documentation, functional requirements, how to, network diagram, non-functional requirements, operational model, service model, software design, software engineering, system context, uml, user interface | 3 Comments »
January 19, 2010 by Michael
This article presents the outline of a method for developing Software Architectures. Even though developing Architectures seems to be – and to some extent is – a creative process it is important to approach it in a structured way. This ensures that all important aspects of the architecture – and therefore the client’s non-functional requirements – are covered. Continue Reading »
Posted in Developing Architectures, Documenting Architectures, Software Architecture | Tagged architecture, how to, it, software, software design, software engineering | 2 Comments »