dc.contributor.advisor | Novák, Vítězslav | |
dc.contributor.author | Polaček, Patrik | |
dc.date.accessioned | 2019-06-26T04:23:58Z | |
dc.date.available | 2019-06-26T04:23:58Z | |
dc.date.issued | 2019 | |
dc.identifier.other | OSD002 | |
dc.identifier.uri | http://hdl.handle.net/10084/135574 | |
dc.description.abstract | Bakalárska práca popisuje spôsob optimalizácie e-mailového messagingu cloudovej služby. Jadrom optimalizácie je mikroslužba, ktorá zabezpečuje naplnenie požiadavkou na optimalizáciu danej služby, teda optimalizáciu procesu rozosielania e-mailových správ medzi mikroslužbami a pracovníkmi projektu cloudovej služby alebo zákazníkmi používajúcimi danú cloudovú službu. Cloudová služba je postavená na architektúre mikroslužieb. Primárna požiadavka zahŕňa vytvorenie funkcionality preposielania e-mailov pomocou protokolu HTTP, pri zachovaný zásady softvérovej architektúry rozhraní REST(Representational State Transfer). Mikroslužba umožňuje taktiež preposielanie správ alternatívnou cestou prostredníctvom asynchrónneho message brokeru RabbitMQ. Potreba posielania e-mailových správ zo strany mikroslužieb vyplýva z nutnosti informovania pracovníkov projektu, prípadne iných interných zákazníkov projektu alebo aj zákazníkov používajúcich cloudovú službu o rôznych udalostiach, ktoré môžu vzniknúť v rámci funkcionalít a zámeru jednotlivých mikroslužieb tvoriacich celkový projekt. Záujem o vytvorenie e-mailovej správy prichádza zo strany ostatných mikroslužieb v celkovej architektúre cloudovej služby. Mikroslužba zabezpečujúca optimalizáciu preberá zodpovednosť za prevedenie prijatej správy na vhodnú formu a jej následne odoslanie na stranu SMTP serveru. Záznamy o odoslaných e-mailoch sú transakčne ukladané v relačnej databáze. Pre zabezpečovanie požadovaných funkcionalít sme ako základný prostriedok použili Spring Framework a programovací jazyk Java, pre asynchrónne preposielanie e-mailových správ nástroj RabbitMQ. Preposielanie e-mailových správ s využitým protokolu HTTP pri zachovaní zásady programových rozhraní REST zabezpečil Rest Controller, súčasť Spring Frameworku. Transakčné ukladanie dát bolo realizované technikou objektovo-relačného mapovania s pomocou frameworku Hibernate, spoločne s implementáciou Spring Data JPA(Java Persistence API). Mikroslužba zabezpečujúca optimalizáciu používa na správu a riadenie programových knižníc a na automatizáciu a štandardizáciu zostavenia aplikácie nástroj Maven. Schopnosť asynchrónneho preposielania e-mailových správ zabezpečuje asynchrónny message broker RabbitMQ. Integrácia tohto nástroja s mikroslužbou prebieha pomocou knižnice Spring Frameworku - Spring AMQP(Advanced Message Queuing Protocol). Prijímanie správ prebieha pomocou špecifického objektu RabbitListener, reagujúceho na externú udalosť príchodu novej správy predstavujúcej požiadavku na vytvorenie e-mailu na stranu nástroju RabbitMQ, ktorá je špecificky smerovaná a určená pre našu mikroslužbu. Vytvorená mikroslužba bola úspešne prijatá zadávateľom požiadavku na optimalizáciu procesu e-mailového messagingu. Implementácia mikroslužby prebehla úspešne a je v určitej miere používaná ako nástroj preposielania e-mailových správ v rámci celkového projektu cloudovej služby. Pomocou mikroslužby zabezpečujúcej optimalizáciu sú v súčasnosti preposielané e-maily s informatívnym charakterom medzi rôznymi mikroslužbami tvoriacimi celkovú cloudovú službu a zamestnancami, pracujúcimi na vývoji projektu, prípadne inými internými zákazníkmi projektu. | cs |
dc.description.abstract | The bachelor thesis describes e-mail messaging optimization of a cloud service. The core of optimization is a microservice which is the subject of fulfilling the requirements of given service optimization. The main requirement is to optimize the process of sending e-mail messages between different microservices and employees within a given project or customers using the service. The cloud service is based on the microservice architecture. The main requirement incorporates creating the functionality of sending e-mails with the use of HTTP protocol while maintaining the best practice for creating software communication interfaces REST(Representational State Transfer). Microservice also manages to send messages in an alternative way with the use of asynchronous message broker RabbitMQ. The need for sending e-mail messages comes from the requirement of informing all the project employees or any other internal project customers about any kind of event that could happen within the scope of functionality and goal of different microservices within the entire architecture of the could service. The initial request for creating and sending e-mail message comes from other microservices within the whole project architecture.
Microservice which provides the core optimization functionality takes over the responsibility to convert received message to matching form and it’s sending to an SMTP server. The records of sent e-mails are saved within the relational database. As the core tool for providing needed functionalities, we used the Spring Framework together with the programming language Java. For sending e-mail messages in an asynchronous way, we used the RabbitMQ. The forwarding of e-mail messages with the use of HTTP protocol was managed by the Rest Controller, a part of the Spring Framework. Transactional persisting of records was achieved by Hibernate Framework, together with the Spring Data JPA(Java Persistence API). The microservice used in the optimization also uses Maven, a software tool for project dependency and library management. The need for sending e-mail messages asynchronously is covered by the asynchronous message broker RabbitMQ. The integration of RabbitMQ with our microservice was done using the library of the Spring Framework – Spring AMQP(Advanced Message Queuing Protocol). For receiving messages, we used a special listener object – RabbitListener, which listens for external events of receiving RabbitMQ messages within a specific queue, forwarded to our microservice.
Given microservice was successfully accepted by the submitter of initial requirements to optimize e-mail messaging. The implementation of the microservice was successful and is currently used as a tool for forwarding e-mails within the entire project of the cloud service. Currently, our microservice forwards e-mails with informative content between different microservices within the entire cloud service architecture and employees or other internal customers working on the development of given cloud service. | en |
dc.format.extent | 1954484 bytes | |
dc.format.mimetype | application/pdf | |
dc.language.iso | cs | |
dc.publisher | Vysoká škola báňská - Technická univerzita Ostrava | cs |
dc.subject | mikroslužba | cs |
dc.subject | e-mailový messaging | cs |
dc.subject | optimalizácia procesu rozosielania e-mailov | cs |
dc.subject | Spring Framework | cs |
dc.subject | Java | cs |
dc.subject | RabbitMQ | cs |
dc.subject | asynchrónny messaging | cs |
dc.subject | Maven | cs |
dc.subject | Hibernate | cs |
dc.subject | microservice | en |
dc.subject | e-mail messaging | en |
dc.subject | optimization of e-mail messaging | en |
dc.subject | Spring Framework | en |
dc.subject | Java | en |
dc.subject | RabbitMQ | en |
dc.subject | asynchronous messaging | en |
dc.subject | Maven | en |
dc.subject | Hibernate | en |
dc.title | Optimalizace e-mailového messagingu cloudové služby | cs |
dc.title.alternative | Email Messaging Optimization of a Cloud Service | en |
dc.type | Bakalářská práce | cs |
dc.contributor.referee | Bačovský, Jiří | |
dc.date.accepted | 2019-06-04 | |
dc.thesis.degree-name | Bc. | |
dc.thesis.degree-level | Bakalářský studijní program | cs |
dc.thesis.degree-grantor | Vysoká škola báňská - Technická univerzita Ostrava. Ekonomická fakulta | cs |
dc.description.department | 155 - Katedra aplikované informatiky | cs |
dc.thesis.degree-program | Systémové inženýrství a informatika | cs |
dc.thesis.degree-branch | Informatika v ekonomice | cs |
dc.description.result | výborně | cs |
dc.identifier.sender | S2751 | |
dc.identifier.thesis | POL0350_EKF_B6209_6209R017_2019 | |
dc.rights.access | openAccess | |