[almighty] Architectural Considerations: User based setup (Configs, Wizards, Code)
Max Rydahl Andersen
manderse at redhat.com
Thu Jul 28 11:30:18 UTC 2016
On 28 Jul 2016, at 13:07, Pete Muir wrote:
> The other thing to think about here is "infrastructure as code",
> particularly in relation to continuous delivery.
>
> How would someone be able to store the ALM configuration in a source
> control repo, and make changes to the running instance using
> continuous delivery and at the same time support non-technical users
> in making changes (such as the UIs that Miroslav discussed).
Just to make sure we are talking about the same things here.
What ALM configuration are you thinking about specifically ?
I'm currently of the mindset that if you are going for the SCM based
approach then you are on your own and thus non-technical users cannot
make users via
a controlled UI. What the ALM will then do is more about being a
destination
for the build to publish results to rather than be automagically
configured.
This of course does not mean another project in the same ALM can't
support
a more UI driven approach.
> I think this is definitely a scenario we should support, given our
> focus on supporting companies wanting to use CD/pipelines.
+1
/max
>
> On 27 July 2016 at 08:48, Konrad Kleine <kkleine at redhat.com> wrote:
>> Hi Miroslav,
>>
>> thank you for sharing your thoughts on these three ways to customize
>> an
>> application:
>>
>>> 1. Via dedicated UI forms, wizards and DSL
>>> 2. Using configuration files
>>> 3. Customizing it in application code
>>
>>
>> I believe that 1. and 2. have a somewhat symbiotic effect. Let me try
>> to
>> explain what I mean by this:
>>
>> I think there's the act of customizing and then there is storing of
>> this
>> customization. The later can be a configuration file format (e.g.
>> JSON) with
>> DSL inside. We use PostgreSQL as our database and this can store JSON
>> as
>> native objects. The pure act of customization on the other side can
>> be
>> either writing these JSON files by hand or manipulating them using a
>> UI.
>>
>> I may be naive but I think the benefit of having a configuration file
>> format
>> allows for customization right from the start. A UI can be added
>> later (that
>> is probably the naive part).
>>
>> Regards,
>> Konrad Kleine
>>
>> Software Engineer
>> Red Hat GmbH
>> Werner-von-Siemens-Ring 15
>> 85630 Grasbrunn, Germany
>>
>>
>> On Tue, Jul 26, 2016 at 7:00 PM, Miroslav Hradilek
>> <mhradile at redhat.com>
>> wrote:
>>>
>>> Hello,
>>>
>>> this is the first of my emails where I will be sharing my thoughts
>>> on some
>>> design decisions that, in my opinion, are worth considering when
>>> designing
>>> ALM architecture.
>>>
>>>
>>> # User Based Setup
>>>
>>> So in most applications, and especially ones like ALM, there is a
>>> big need
>>> for customizing everything like objects, behavior etc.
>>>
>>> It is mostly done in three ways:
>>>
>>> 1. Via dedicated UI forms, wizards and DSL
>>> 2. Using configuration files
>>> 3. Customizing it in application code
>>>
>>>
>>> I've personally had a chance to use all three ways throughout my
>>> life and
>>> I'm sure the readers are the same. All the methods have pros and
>>> cons. Some
>>> depend on licensing and their application depends on the skill set
>>> of the
>>> user.
>>>
>>> # Approaches
>>>
>>> 1) UI etc
>>> This is by far the most consumable method for not very technically
>>> skilled
>>> people or people not willing to invest in learning the application.
>>> The sole
>>> configuration form is like reference documentation and configuration
>>> files
>>> combined. Even higher level of contextual configuration can be
>>> achieved by
>>> employing wizards which interact with the user until the
>>> configuration is
>>> finished.
>>>
>>> The downside to this is that it requires the application developers
>>> to
>>> burn time to code often quite complex forms. Sometimes the
>>> expression of
>>> such form is quite limited and Domain Specific Language must be
>>> defined to
>>> overcome this lack of expression. Example being the languages
>>> describing
>>> mail filters, query languages etc.
>>>
>>> After some time the user learns a lot about the application and
>>> these
>>> interfaces start to limit his/her efficiency.
>>>
>>> 2) Configuration files
>>> Somewhere in between. You do not have to be a coder to configure
>>> application this way.
>>>
>>> What you have to do though, is to read quite a bit about the
>>> application
>>> and have a reference documentation at hand. This can be minimized by
>>> including the documentation inside template configuration files in
>>> form of
>>> comments. The expression is quite limited. Difficult data structures
>>> and
>>> Domain Specific Languages must be used to overcome this problem.
>>>
>>> 3) Hacking the code
>>> You need to be involved a lot in the application and you have to
>>> understand it's code in order to modify it.
>>>
>>> The expression is virtually unlimited though with little effort on
>>> developers side. No config interpretation code and DSLs are
>>> necessary. This
>>> can be improved a lot by splitting the configuration part of the
>>> code from
>>> the system implementation structuring the code as a configuration
>>> file. If
>>> you include documentation in comments you have a nearly commented
>>> config
>>> file experience but you still require the user to be quite involved
>>> in the
>>> app and know at least basic data structures used in the language.
>>>
>>> The biggest downside is that the app often (not necessarily) needs
>>> to be
>>> rebuilt to perform a change. Second most severe limitation is that
>>> closed
>>> source applications would be difficult if not impossible to
>>> configure this
>>> way.
>>>
>>> # How to choose
>>>
>>> There is one important consideration, sometimes overlooked when
>>> deciding
>>> which style of configuration to employ. Apart from time money and
>>> developers
>>> personal engagement. It is the TARGET AUDIENCE.
>>>
>>> Who will be configuring which part in reality? How involved are they
>>> going
>>> to be in the application when in production? What are their use
>>> cases? Are
>>> there any security implications if I choose this over that?
>>>
>>> These are some of the questions you should consider. And please do
>>> expand
>>> on this. I'm sure you will have some more options to consider.
>>>
>>> --
>>> Miroslav Hradilek
>>> Quality Assurance Engineer
>>> Base OS Quality Engineering
>>>
>>> Red Hat Czech, s. r. o.
>>> Purkynova 99
>>> 612 45 Brno, Czech Republic
>>>
>>> _______________________________________________
>>> almighty-public mailing list
>>> almighty-public at redhat.com
>>> https://www.redhat.com/mailman/listinfo/almighty-public
>>
>>
>>
>> _______________________________________________
>> almighty-public mailing list
>> almighty-public at redhat.com
>> https://www.redhat.com/mailman/listinfo/almighty-public
>>
>
> _______________________________________________
> almighty-public mailing list
> almighty-public at redhat.com
> https://www.redhat.com/mailman/listinfo/almighty-public
/max
http://about.me/maxandersen
More information about the almighty-public
mailing list