Comparison of Monolithic, Micro-service, and Cloud development
Pikkumäki, Toni (2023)
Pikkumäki, Toni
2023
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202305047676
https://urn.fi/URN:NBN:fi:amk-202305047676
Tiivistelmä
Moderni sovelluskehitys tarjoaa paljon vaihtoehtoja. Ei ole yhtä teknologiaa, joka olisi muita parempi. Sen sijaan, eri teknologioilla on omat etunsa ja haasteensa. Yksi keino sovelluskehitysteknologian valinnassa on määritellä ohjelmiston tärkein prosessi, ja suorittaa vertailu kohdeteknologioiden välillä.
Tähän tutkimukseen valittiin kolme teknologiaa: .NET-monoliittinen, Java Spring Boot -mikropalvelu ja AWS-pilvisovellus. Valinnat edustavat sekä eri ohjelmointikieliä että ohjelmistoarkkitehtuureja, ja vertailun painopiste oli jälkimmäisessä. Päätavoitteena oli löytää näiden valintojen sekä parhaat että huonot puolet, sekä vertailla teknologioita keskenään. Tutkimus keskittyi sovellusten toteutuslogiikkaan, ilman testaus- ja DevOps-osuuksia. Jokaisesta teknologiasta rakennettiin oma prototyyppinsä, minkä tavoitteena oli havainnollistaa näiden sekä edut että haitat. Teknologioiden arviointi tehtiin tarkastelemalla arkkitehtuureja itsessään, sovelluskehittäjän näkökulmasta, suoriutumisen pohjalta, suosiolla Suomen työnhaussa sekä kehityskustannuksista.
Tutkimus vahvisti väitettä, että yksikään teknologioista ei ole yksinään paras valinta. Lopputulokset toivat esiin tapauksia, jotka joko parhaiten tai huonoiten sopivat kyseisiin teknologioihin. Monoliittinen oli soveltuvin pieniin sovelluksiin, joita ei tulla jatkokehittämään, mutta huono yhtään monimutkaisemman kanssa. Mikropalvelu osoittautui uudelleenkäytettävimmäksi, vaikkakin työläimmäksi toteuttaa ja ylläpitää. AWS-pilvi oli joustavin vaihtoehto vaatien enemmänkin ymmärrystä itse AWS-rajapinnasta sovelluskehityksen sijaan, jonka haittana on se, että kalliin laskun välttäminen hinnoittelumallin vuoksi vaatii tarkkuutta kehittäessä, sekä pilvitarjoajan valinnan vaihdon vaikeus. Modern software development offers a wide variety of choices. There is no one technology above
all others; instead, all have their advantages and shortcomings. One way to decide which technology to select when developing software is to define its main use case and perform a comparison between the target technologies.
Three technologies with different software architectural models were selected for this investigation: .NET Monolithic, Java Spring Boot Microservice, and AWS Cloud. A different development language and software architecture was chosen for each, although the focus was on the latter. The main goal was to find the strengths and weaknesses of each selection and how they compare with each other. The research focused on developing applications’ core logic, omitting testing, and DevOps aspects of software development. A prototype was built with each of the selected technologies, with the goal of making each represent typical aspects of the technology, both good and bad. Evaluation of each prototype was done by investigating the architectural models themselves, from the point of view of a developer, by their overall performance, popularity in the Finnish job market, and implementation costs.
The research confirmed that none of the selected technologies is an absolute choice. Instead, the outcome highlighted which use cases would best benefit or be marred by each technology. Monolithic was found to be mainly suitable for tiny applications with no prospect of future development while becoming troublesome if used for anything more complicated. Microservice proved to be an optimal choice regarding re-usability, although requiring a rather high development and maintenance workload. The AWS Cloud was the most flexible solution, requiring more understanding of the AWS itself than actual software development; however, the downside was possible high costs if not properly designed and optimized due to its pricing model and the finality of choosing a cloud provider.
Tähän tutkimukseen valittiin kolme teknologiaa: .NET-monoliittinen, Java Spring Boot -mikropalvelu ja AWS-pilvisovellus. Valinnat edustavat sekä eri ohjelmointikieliä että ohjelmistoarkkitehtuureja, ja vertailun painopiste oli jälkimmäisessä. Päätavoitteena oli löytää näiden valintojen sekä parhaat että huonot puolet, sekä vertailla teknologioita keskenään. Tutkimus keskittyi sovellusten toteutuslogiikkaan, ilman testaus- ja DevOps-osuuksia. Jokaisesta teknologiasta rakennettiin oma prototyyppinsä, minkä tavoitteena oli havainnollistaa näiden sekä edut että haitat. Teknologioiden arviointi tehtiin tarkastelemalla arkkitehtuureja itsessään, sovelluskehittäjän näkökulmasta, suoriutumisen pohjalta, suosiolla Suomen työnhaussa sekä kehityskustannuksista.
Tutkimus vahvisti väitettä, että yksikään teknologioista ei ole yksinään paras valinta. Lopputulokset toivat esiin tapauksia, jotka joko parhaiten tai huonoiten sopivat kyseisiin teknologioihin. Monoliittinen oli soveltuvin pieniin sovelluksiin, joita ei tulla jatkokehittämään, mutta huono yhtään monimutkaisemman kanssa. Mikropalvelu osoittautui uudelleenkäytettävimmäksi, vaikkakin työläimmäksi toteuttaa ja ylläpitää. AWS-pilvi oli joustavin vaihtoehto vaatien enemmänkin ymmärrystä itse AWS-rajapinnasta sovelluskehityksen sijaan, jonka haittana on se, että kalliin laskun välttäminen hinnoittelumallin vuoksi vaatii tarkkuutta kehittäessä, sekä pilvitarjoajan valinnan vaihdon vaikeus.
all others; instead, all have their advantages and shortcomings. One way to decide which technology to select when developing software is to define its main use case and perform a comparison between the target technologies.
Three technologies with different software architectural models were selected for this investigation: .NET Monolithic, Java Spring Boot Microservice, and AWS Cloud. A different development language and software architecture was chosen for each, although the focus was on the latter. The main goal was to find the strengths and weaknesses of each selection and how they compare with each other. The research focused on developing applications’ core logic, omitting testing, and DevOps aspects of software development. A prototype was built with each of the selected technologies, with the goal of making each represent typical aspects of the technology, both good and bad. Evaluation of each prototype was done by investigating the architectural models themselves, from the point of view of a developer, by their overall performance, popularity in the Finnish job market, and implementation costs.
The research confirmed that none of the selected technologies is an absolute choice. Instead, the outcome highlighted which use cases would best benefit or be marred by each technology. Monolithic was found to be mainly suitable for tiny applications with no prospect of future development while becoming troublesome if used for anything more complicated. Microservice proved to be an optimal choice regarding re-usability, although requiring a rather high development and maintenance workload. The AWS Cloud was the most flexible solution, requiring more understanding of the AWS itself than actual software development; however, the downside was possible high costs if not properly designed and optimized due to its pricing model and the finality of choosing a cloud provider.