53 research outputs found

    kube-volttron: Rearchitecting the VOLTTRON Building Energy Management System for Cloud Native Deployment

    Full text link
    Managing the energy consumption of the built environment is an important source of flexible load and decarbonization, enabling building managers and utilities to schedule consumption to avoid costly demand charges and peak times when carbon emissions from grid generated electricity are highest. A key technology component in building energy management is the building energy management system. Eclipse VOLTTRON is a legacy software platform which enables building energy management. It was developed for the US Department of Energy (DOE) at Pacific Northwest National Labs (PNNL) written in Python and based on a monolithic build-configure-and-run-in-place system architecture that predates cloud native architectural concepts. Yet the software architecture is componentized in a way that anticipates modular containerized applications, with software agents handling functions like data storage, web access, and communication with IoT devices over specific IoT protocols such as BACnet and Modbus. The agents communicate among themselves over a message bus. This paper describes a proof-of-concept prototype to rearchitect VOLTTRON into a collection of microservices suitable for deployment on the Kubernetes cloud native container orchestration platform. The agents are packaged in redistributable containers that perform specific functions and which can be configured when they are deployed. The deployment architecture consists of single Kubernetes cluster containing a central node, nominally in a cloud-based VM, where a microservice containing the database agent (called a "historian") and the web site agent for the service run, and gateway nodes running on sites in buildings where a microservice containing IoT protocol-specific agents handles control and data collection to and from devices, and communication back to the central node

    A DEVSECOPS APPROACH FOR DEVELOPING AND DEPLOYING CONTAINERIZED CLOUD-BASED SOFTWARE ON SUBMARINES

    Get PDF
    There are unique challenges for using secure cloud services in disconnected resource-constrained environments and with controlled data. To address those challenges, this thesis introduces a tactical-edge platform-as-a-service (PaaS) solution with a declarative-delivery method for submarine Consolidated Afloat Network Enterprise Services (CANES) operating systems. The PaaS is adapted from the Department of Defense’s Big Bang core elements for submarine-focused outcomes. Using the Team Submarine Project Blue initiative as a case study, this thesis consists of a feasibility study for running containerized applications on different submarine-compatible baselines and applying a prototype declarative software-delivery method called ZARF. We demonstrated the feasibility of using ZARF for packaging and automated deployment of the Project Blue PaaS and its software to the submarine CANES infrastructure. This research culminated in successful integration tests on a current and future submarine hardware and software baseline. The thesis documents the execution of the research, lessons learned, and recommendations for the Navy’s path forward for development of secure software and declarative deployment in air-gapped environments.Outstanding ThesisLieutenant, United States NavyApproved for public release. Distribution is unlimited

    Designing an open-source cloud-native MLOps pipeline

    Get PDF
    Deploying machine learning models is found to be a massive issue in the field. DevOps and Continuous Integration and Continuous Delivery (CI/CD) has proven to streamline and accelerate deployments in the field of software development. Creating CI/CD pipelines in software that includes elements of Machine Learning (MLOps) has unique problems, and trail-blazers in the field solve them with the use of proprietary tooling, often offered by cloud providers. In this thesis, we describe the elements of MLOps. We study what the requirements to automate the CI/CD of Machine Learning systems in the MLOps methodology. We study if it is feasible to create a state-of-the-art MLOps pipeline with existing open-source and cloud-native tooling in a cloud provider agnostic way. We designed an extendable and cloud-native pipeline covering most of the CI/CD needs of Machine Learning system. We motivated why Machine Learning systems should be included in the DevOps methodology. We studied what unique challenges machine learning brings to CI/CD pipelines, production environments and monitoring. We analyzed the pipeline’s design, architecture, and implementation details and its applicability and value to Machine Learning projects. We evaluate our solution as a promising MLOps pipeline, that manages to solve many issues of automating a reproducible Machine Learning project and its delivery to production. We designed it as a fully open-source solution that is relatively cloud provider agnostic. Configuring the pipeline to fit the client needs uses easy-to-use declarative configuration languages (YAML, JSON) that require minimal learning overhead

    Exploring maintainability and performance in Ballerina Microservices

    Get PDF
    Microservices architecture currently is the industry norm for creating applications since it allows teams to focus on individual services related to specific business functionalities, reducing the overall application complexity and improving its maintainability. However, microservices architecture has liabilities regarding service integration, communication, governance, and data management. To solve these liabilities, the industry and academic community have focused on creating new frameworks and solutions. More recently, the focus changed to creating new programming languages focused on microservices. This study aims to investigate the effects of language-oriented approaches in developing microservices. The work focuses on Ballerina, a programming language created to simplify the creation and integration of microservices. From the literature’s analysis, Ballerina demonstrates the ability to be more beneficial than the most common implementations of microservices that use more common frameworks. To further investigate these statements, an experience based on the migration of existing microservices developed in Java with the use of the framework Spring Boot was conducted. This experience used a migration strategy created based on the language’s specificities. The resulting Ballerina microservice is compared with its original counterpart. The experience focused on analyzing both solutions in terms of maintainability and performance. Therefore, the Goals, Questions, Metrics (GQM) approach was used to obtain metrics for the mentioned quality attributes. From the obtained results, it was concluded that the Ballerina solution presents differences from the Spring Boot solution, being superior regarding maintainability and inferior in performance.A arquitetura baseada em microserviços atualmente é dentro da indústria considerada a norma para a criação de aplicações. A arquitetura baseada em microserviços apresenta diversas vantagens, como a possibilidade de distribuir as diferentes funcionalidades da aplicação por diversas equipas, possibilitando também o desenvolvimento dos seus serviços em linguagens de programação diferentes. Esta modularização traduz-se num acréscimo à independência das equipas, possibilitando a implementação dos seus próprios processos de trabalho como também reduz a complexidade total da aplicação, aumentando a sua manutenibilidade. Contudo, a arquitetura baseada em microserviços, dado o aumento na sua utilização, deu origem a novas questões e preocupações para as equipas de desenvolvimento e para as organizações. As equipas de desenvolvimento encontraram dificuldades na integração e comunicação dos seus serviços, principalmente quando estes eram desenvolvidos em linguagens de programação bastante divergentes. Apesar da modularidade e desacoplamento dos serviços, começou a ser detetada uma grande dependência com metodologias de implantação do código, onde o sucesso de microserviços encontrava-se fortemente dependente do uso de contentores e sistemas de orquestração. As organizações identificaram um aumento nos seus custos devido ao aumento de processos, armazenamento em servidores e de software para suporte às diversas equipas. Estas dificuldades advêm do facto de as linguagens de programação habitualmente usadas para a criação de microserviços não terem sido edificadas com o objetivo de suportar microserviços bem como não salvaguardam algumas das preocupações identificadas anteriormente. De forma a combater estas dificuldades, a indústria e a comunidade académica incidiram as suas investigações em novas frameworks e soluções. Recentemente, dado o novo foco na otimização para o "desenvolvimento", surgiram novas linguagens de programação orientadas a microserviços. Este estudo tem como objetivo investigar os efeitos da utilização de linguagens de programação orientadas a microserviços e subsequentemente a análise do seu impacto relativamente a atributos de qualidade relevantes para os mesmos. O foco deste estudo incidirá na linguagem de programação Ballerina, uma linguagem de programação criada com o intuito de facilitar a criação de serviços resilientes capazes de se integrarem e orquestrarem através de pontos de saída distribuídos. Foi realizada uma investigação à literatura existente sobre microserviços e sobre Ballerina, com especial atenção na literatura referente à utilização de Ballerina em microserviços. Esta investigação objetivou a identificação dos atributos de qualidade relevantes, de onde se precisou a manutenibilidade e a performance como sendo os atributos a avaliar. Derivada da análise da literatura, quando confrontada com implementações de linguagens de programação mais tradicionais, Ballerina demonstra a capacidade de proporcionar benefícios aquando da sua utilização em microserviços. Ballerina apresenta vantagens tais como o suporte nativo para a utilização de contentores, suporte a DevOps e funcionalidades focadas na segurança e resiliência das aplicações. De forma a aferir estas afirmações, foi efetuada uma experiência controlada baseada na migração de microserviços desenvolvidos na linguagem de programação Java com recurso à framework Spring Boot para a linguagem Ballerina. Para a realização desta experiência, primeiramente foi escolhido um projeto base do qual se realizaria a migração. O projeto a migrar teria de cumprir alguns requisitos, tais como: ser open-source, ter atividade recente e um número significativo de microserviços. Com base nestes requisitos, foi selecionado o projeto Lakeside Mutual, um projeto sobre uma companhia de seguros fictícia, desenvolvido com o propósito de demonstrar a utilização de padrões sobre APIs e design orientado ao domínio. Seguidamente, foi desenhada uma estratégia de migração com base nas especificidades da linguagem. Dada a implementação da estratégia, foi edificado um serviço em Ballerina à semelhança do original implementado em Java, mantendo todos os seus atributos e funcionalidades. As soluções foram comparadas em termos de manutenibilidade e performance, em que para tal foi utilizada a abordagem Goal, Question, Metrics (GQM) de forma a obter métricas para os atributos de qualidade previamente mencionados. Em termos de manutenibilidade, foram analisados os números de linhas de código existentes e a complexidade calculada através dos níveis de indentação dado que Ballerina ainda não suporta ferramentas como o Sonarqube. Relativamente à performance, foi desenhado e implementado um plano de testes com um número variado de utilizadores virtuais que executavam um conjunto de pedidos REST. Dos resultados obtidos, foi concluído que existem diferenças notáveis entre ambas as soluções. A solução em Ballerina apresenta melhores resultados do que a solução em Spring Boot relativamente à manutenibilidade. Contudo, relativamente à performance, a solução em Spring Boot demonstra obter melhores resultados

    Building and monitoring an event-driven microservices ecosystem

    Get PDF
    Throughout the years, software architectures have evolved deeply to attempt to address the main issues that have been emerging, mainly due to the ever-changing market needs. The need to provide a way for organizations and teams to build applications independently and with greater agility and speed led to the adoption of microservices, particularly endorsing an asynchronous methodology of communication between them via events. Moreover, the evergrowing demands for high-quality resilient and highly available systems helped pave the path towards a greater focus on strict quality measures, particularly monitoring and other means of assuring the well-functioning of components in production in real-time. Although techniques like logging, monitoring, and alerting are essential to be employed for each microservice, it may not be enough considering an event-driven architecture. Studies have shown that although organizations have been adopting this type of software architecture, they still struggle with the lack of visibility into end-to-end business processes that span multiple microservices. This thesis explores how to guarantee observability over such architecture, thus keeping track of the business processes. It shall do so by providing a tool that facilitates the analysis of the current situation of the ecosystem, as well as allow to view and possibly act upon the data. Two solutions have been explored and are therefore presented thoroughly, alongside a detailed comparison with the purpose of drawing conclusions and providing some guidance to the readers. These outcomes that were produced by the thesis resulted in a paper published and registered to be presented at this year’s edition of the SEI hosted at ISEP.Ao longo dos últimos anos, as arquiteturas de software têm evoluído significativamente de forma a tentar resolver os principais problemas que têm surgindo, principalmente derivados nas necessidades do mercado que estão em constante mudança. A necessidade de providenciar uma forma das organizações e suas equipas construírem aplicações independentemente e com uma maior agilidade e rapidez levou à adoção de microserviços, geralmente aplicando uma metodologia de comunicação assíncrona através de eventos. Para além disso, a constante evolução da necessidade de ter sistemas de qualidade e altamente resilientes e disponíveis, ajudou a direcionar um maior foco para padrões de qualidade mais rigorosos, particularmente no que toca a monitorização e outros meios para assegurar o correto funcionamento de componentes em produção em tempo-real. Embora técnicas como a produção de logs, monitorização e alarmística sejam essenciais para ser aplicadas a cada microserviço, poderá não ser suficiente quando consideramos uma arquitetura baseada em eventos. Estudos recentes apontam para que organizações, apesar de estarem a adotar cada vez mais este tipo de arquiteturas de software, ainda encontram bastantes dificuldades devido à falta de visibilidade que possuem dos processos de negócio que envolvem e se propagam por diversos microserviços. Esta tese explora como garantir visibilidade sobre uma arquitetura como a descrita, e assim conseguir seguir os processos de negócio. O resultado da mesma deverá atender a isso providenciando uma ferramenta que facilita a análise da situação atual do ecossistema, e que possibilita a visualização e a intervenção sobre os dados que são disponibilizados. Foram desenvolvidas duas soluções que serão apresentadas detalhadamente juntamente com uma comparação entre as duas com o propósito de tirar mais conclusões e providenciar alguma orientação ao leitor. A tese originou a criação de um artigo submetido para ser apresentado na edição deste ano do SEI

    Hybrid Cloud Workload Monitoring as a Service

    Get PDF
    Cloud computing and cloud-based hosting has become embedded in our daily lives. It is imperative for cloud providers to make sure all services used by both enterprises and consumers have high availability and elasticity to prevent any downtime, which impacts negatively for any business. To ensure cloud infrastructures are working reliably, cloud monitoring becomes an essential need for both businesses, the provider and the consumer. This thesis project reports on the need of efficient scalable monitoring, enumerating the necessary types of metrics of interest to be collected. Current understanding of various architectures designed to collect, store and process monitoring data to provide useful insight is surveyed. The pros and cons of each architecture and when such architecture should be used, based on deployment style and strategy, is also reported in the survey. Finally, the essential characteristics of a cloud monitoring system, primarily the features they host to operationalize an efficient monitoring framework, are provided as part of this review. While its apparent that embedded and decentralized architectures are the current favorite in the industry, service-oriented architectures are gaining traction. This project aims to build a light-weight, scalable, embedded monitoring tool which collects metrics at different layers of the cloud stack and aims at achieving correlation in resource-consumption between layers. Future research can be conducted on efficient machine learning models used on the monitoring data to predict resource usage spikes pre-emptively

    Atlas: Hybrid Cloud Migration Advisor for Interactive Microservices

    Full text link
    Hybrid cloud provides an attractive solution to microservices for better resource elasticity. A subset of application components can be offloaded from the on-premises cluster to the cloud, where they can readily access additional resources. However, the selection of this subset is challenging because of the large number of possible combinations. A poor choice degrades the application performance, disrupts the critical services, and increases the cost to the extent of making the use of hybrid cloud unviable. This paper presents Atlas, a hybrid cloud migration advisor. Atlas uses a data-driven approach to learn how each user-facing API utilizes different components and their network footprints to drive the migration decision. It learns to accelerate the discovery of high-quality migration plans from millions and offers recommendations with customizable trade-offs among three quality indicators: end-to-end latency of user-facing APIs representing application performance, service availability, and cloud hosting costs. Atlas continuously monitors the application even after the migration for proactive recommendations. Our evaluation shows that Atlas can achieve 21% better API performance (latency) and 11% cheaper cost with less service disruption than widely used solutions.Comment: To appear at EuroSys 202

    Reactive Microservices - An Experiment

    Get PDF
    Os microserviços são geralmente adotados quando a escalabilidade e flexibilidade de uma aplicação são essenciais para o seu sucesso. Apesar disto, as dependências entre serviços transmitidos através de protocolos síncronos, resultam numa única falha que pode afetar múltiplos microserviços. A adoção da capacidade de resposta numa arquitetura baseada em microserviços, através da reatividade, pode facilitar e minimizar a proliferação de erros entre serviços e na comunicação entre eles, ao dar prioridade à capacidade de resposta e à resiliência de um serviço. Esta dissertação fornece uma visão geral do estado da arte dos microserviços reativos, estruturada através de um processo de mapeamento sistemático, onde são analisados os seus atributos de qualidade mais importantes, os seus erros mais comuns, as métricas mais adequadas para a sua avaliação, e as frameworks mais relevantes. Com a informação recolhida, é apresentado o valor deste trabalho, onde a decisão do projeto e a framework a utilizar são tomadas, através da técnica de preferência de ordem por semelhança com a solução ideal e o processo de hierarquia analítica, respetivamente. Em seguida, é realizada a análise e o desenho da solução, para o respetivo projeto, onde se destacam as alterações arquiteturais necessárias para o converter num projeto de microserviços reativo. Em seguida, descreve-se a implementação da solução, começando pela configuração do projeto necessária para agilizar o processo de desenvolvimento, seguida dos principais detalhes de implementação utilizados para assegurar a reatividade e como a framework apoia e simplifica a sua implementação, finalizada pela configuração das ferramentas de métricas no projeto para apoiar os testes e a avaliação da solução. Em seguida, a validação da solução é investigada e executada com base na abordagem Goals, Questions, Metrics (GQM), para estruturar a sua análise relativamente à manutenção, escalabilidade, desempenho, testabilidade, disponibilidade, monitorabilidade e segurança, finalizada pela conclusão do trabalho global realizado, onde são listadas as contribuições, ameaças à validade e possíveis trabalhos futuros.Microservices are generally adopted when the scalability and flexibility of an application are essential to its success. Despite this, dependencies between services transmitted through synchronous protocols result in one failure, potentially affecting multiple microservices. The adoption of responsiveness in a microservices-based architecture, through reactivity, can facilitate and minimize the proliferation of errors between services and in the communication between them by prioritizing the responsiveness and resilience of a service. This dissertation provides an overview of the reactive microservices state of the art, structured through a systematic mapping process, where its most important quality attributes, pitfalls, metrics, and most relevant frameworks are analysed. With the gathered information, the value of this work is presented, where the project and framework decision are made through the technique of order preference by similarity to the ideal solution and the analytic hierarchy process, respectively. Then, the analysis and design of the solution are idealized for the respective project, where the necessary architectural changes are highlighted to convert it to a reactive microservices project. Next, the solution implementation is described, starting with the necessary project setup to speed up the development process, followed by the key implementation details employed to ensure reactivity and how the framework streamlines its implementation, finalized by the metrics tools setup in the project to support the testing and evaluation of the solution. Then, the solution validation is traced and executed based on the Goals, Questions, Metrics (GQM) approach to structure its analysis regarding maintainability, scalability, performance, testability, availability, monitorability, and security, finalized by the conclusion of the overall work done, where the contributions, threats to validity and possible future work are listed

    Jolie Microservices: An Experiment

    Get PDF
    Os microsserviços estão cada vez mais presentes no mundo das tecnologias de informação, por providenciarem uma nova forma construir sistemas mais escaláveis, ágeis e flexíveis. Apesar disto, estes trazem consigo o problema da complexidade de comunicação entre microsserviços, fazendo com que o sistema seja difícil de manter e de se perceber. Linguagens de programação específicas a microsserviços como Jolie entram em cena para tentar resolver este problema e simplificar a construção de sistemas com arquiteturas de microsserviços. Este trabalho fornece uma visão ampla do estado da arte da linguagem de programação Jolie onde é primeiramente detalhado o porquê de surgirem linguagens específicas a microsserviços e como a linguagem Jolie está construída de maneira a coincidir com as arquiteturas de microsserviços através de recursos nativos. Para demonstrar todas as vantagens de usar esta linguagem em comparação com as abordagens mais mainstream é pensado um experimento de desenvolvimento de um sistema de microsserviços no âmbito de uma aplicação de e-commerce. Este sistema é construído de forma igual usando duas bases tecnológicas – Jolie e Spring Boot. O Spring Boot é considerado a tecnologia mais usada para desenvolver sistemas de microsserviços sendo o candidato ideal para comparação. É pensada toda a análise e design deste experimento. Em seguida, a implementação da solução é detalhada a partir das configurações do sistema, escolhas arquitetónicas e como elas são implementadas. Componentes como API gateway, mediadores de mensagens, bases de dados, orquestração de microsserviços, e conteinerização para cada microsserviço e outros componentes do sistema. Pol último as soluções são comparadas e analisadas com base na abordagem Goals, Questions, Metrics (GQM). São analisadas relativamente a atributos de qualidade como manutenção, escalabilidade, desempenho e testabilidade. Após esta análise pode-se concluir que a solução construída com Jolie apresenta diferenças na manutenção sendo significativamente superior à solução baseada em Spring Boot e apresenta diferenças em termos de performance sendo ligeiramente inferior à solução construída com Spring Boot. O trabalho termina com a indicação das conquistas, dificuldades, ameaças à validade, possíveis trabalhos futuros e observações finais.Microservices are increasingly present in the world of information technologies, as they provide a new way to build more scalable, agile, and flexible systems. Despite this, they bring with them the problem of communication complexity between microservices, making the system difficult to maintain and understand. Microservices-specific programming languages like Jolie come into play to try to solve this problem and simplify the construction of systems with microservices architectures. This work provides a broad view of the State of Art of the Jolie programming language, where it is first detailed why microservices-specific languages emerge and how the Jolie language is built to match microservices architectures through native resources. To demonstrate all the advantages of using this language compared to more mainstream approaches, an experiment is designed to develop a microservices system within an e-commerce application. This system is built equally using two technological foundations – Jolie and Spring Boot. Spring Boot is considered the most used technology to develop microservices systems and is an ideal candidate for comparison. The entire analysis and design of this experiment are thought through. Then the implementation of the solution is detailed from system configurations, architectural choices, and how they are implemented. Components such as API gateway, message brokers, databases, microservices orchestration, and containerization for each microservice and other components of the system. Finally, the solutions are compared and analyzed based on the Goals, Questions, Metrics (GQM) approach. They are analyzed for quality attributes such as maintainability, scalability, performance, and testability. After this analysis, it can be concluded that the solution built with Jolie presents differences in maintenance being significant superior to the solution based on Spring Boot, and it presents differences in terms of performance being slightly inferior to the solution built with Spring Boot. The work ends with an indication of the achievements, difficulties, threats to validity, possible future work, and final observations

    Scalability Benchmarking of Cloud-Native Applications Applied to Event-Driven Microservices

    Get PDF
    Cloud-native applications constitute a recent trend for designing large-scale software systems. This thesis introduces the Theodolite benchmarking method, allowing researchers and practitioners to conduct empirical scalability evaluations of cloud-native applications, their frameworks, configurations, and deployments. The benchmarking method is applied to event-driven microservices, a specific type of cloud-native applications that employ distributed stream processing frameworks to scale with massive data volumes. Extensive experimental evaluations benchmark and compare the scalability of various stream processing frameworks under different configurations and deployments, including different public and private cloud environments. These experiments show that the presented benchmarking method provides statistically sound results in an adequate amount of time. In addition, three case studies demonstrate that the Theodolite benchmarking method can be applied to a wide range of applications beyond stream processing
    corecore