  Modern cloud computing advances have been pressing application modernization
in the last 15 years, stressing the need for application redesign towards the
use of more distributed and ephemeral resources. From the initial IaaS and PaaS
approaches, to microservices and now to the serverless model (and especially
the Function as a Service approach), new challenges arise constantly for
application developers. This paper presents a design and development
environment that aims to ease application evolution and migration to the new
FaaS model, based on the widely used Node-RED open source tool. The goal of the
environment is to enable a more user friendly and abstract function and
workflow creation for complex FaaS applications. To this end, it bypasses
workflow description and function reuse limitations of the current FaaS
platforms, by providing an extendable, pattern-enriched palette of ready-made,
reusable functionality that can be combined in arbitrary ways. The environment
embeds seamless DevOps processes for generating the deployable artefacts (i.e.
functions and images) of the FaaS platform (Openwhisk). Annotation mechanisms
are also available for the developer to dictate diverse execution options or
management guidelines towards the deployment and operation stacks. The
evaluation is based on case studies of indicative scenarios, including
creating, registering and executing functions and flows based on the Node-RED
runtime, embedding of existing legacy code in a FaaS environment, parallelizing
a workload, collecting data at the edge and creating function orchestrators to
accompany the application. For the latter, a detailed argumentation is provided
as to why this process should not be constrained by the "double billing"
principle of FaaS.
