{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T01:08:06Z","timestamp":1760058486691,"version":"build-2065373602"},"reference-count":32,"publisher":"MDPI AG","issue":"4","license":[{"start":{"date-parts":[[2025,4,7]],"date-time":"2025-04-07T00:00:00Z","timestamp":1743984000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Computers"],"abstract":"<jats:p>The microservices architectural style has gained widespread adoption in recent years thanks to its ability to deliver high scalability and maintainability. However, the development process for microservices-based applications can be complex and challenging. Indeed, it often requires developers to manage a large number of distributed components with the burden of handling low-level, recurring needs, such as inter-service communication, brokering, event management, and data replication. In this article, we present Microhooks: a novel framework designed to streamline the development of microservices by allowing developers to focus on their business logic while declaratively expressing the so-called low-level needs. Based on the inversion of control and the materialized view patterns, among others, our framework automatically generates and injects the corresponding artifacts, leveraging 100% build time code introspection and instrumentation, as well as context building, for optimized runtime performance. We provide the first implementation for the Java world, supporting the most popular containers and brokers, and adhering to the standard Java\/Jakarta Persistence API. From the user perspective, Microhooks exposes an intuitive, container-agnostic, broker-neutral, and ORM framework-independent API. Microhooks evaluation against state-of-the-art practices has demonstrated its effectiveness in drastically reducing code size and complexity, without incurring any considerable cost on performance. Based on such promising results, we believe that Microhooks has the potential to become an essential component of the microservices development ecosystem.<\/jats:p>","DOI":"10.3390\/computers14040139","type":"journal-article","created":{"date-parts":[[2025,4,7]],"date-time":"2025-04-07T03:23:07Z","timestamp":1743996187000},"page":"139","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Microhooks: A Novel Framework to Streamline the Development of Microservices"],"prefix":"10.3390","volume":"14","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-5658-2191","authenticated-orcid":false,"given":"Omar","family":"Iraqi","sequence":"first","affiliation":[{"name":"School of Science and Engineering, School of Business Administration, Al Akhawayn University in Ifrane, BP104, Ifrane 53000, Morocco"}]},{"given":"Mohamed","family":"El Kadiri El Hassani","sequence":"additional","affiliation":[{"name":"School of Science and Engineering, School of Business Administration, Al Akhawayn University in Ifrane, BP104, Ifrane 53000, Morocco"}]},{"given":"Anass","family":"Zouine","sequence":"additional","affiliation":[{"name":"School of Science and Engineering, School of Business Administration, Al Akhawayn University in Ifrane, BP104, Ifrane 53000, Morocco"}]}],"member":"1968","published-online":{"date-parts":[[2025,4,7]]},"reference":[{"key":"ref_1","doi-asserted-by":"crossref","unstructured":"Chen, L. (May, January 30). Microservices: Architecting for Continuous Delivery and DevOps. Proceedings of the ICSA. IEEE Computer Society, Seattle, WA, USA. Available online: http:\/\/dblp.uni-trier.de\/db\/conf\/icsa\/icsa2018.html.","DOI":"10.1109\/ICSA.2018.00013"},{"key":"ref_2","doi-asserted-by":"crossref","first-page":"110798","DOI":"10.1016\/j.jss.2020.110798","article-title":"A Systematic Mapping Study on Microservices Architecture in DevOps","volume":"170","author":"Waseem","year":"2020","journal-title":"J. Syst. Softw."},{"key":"ref_3","doi-asserted-by":"crossref","unstructured":"Ponce, F., M\u00e1rquez, G., and Astudillo, H. (2019, January 4\u20139). Migrating from monolithic architecture to microservices: A Rapid Review. Proceedings of the 2019 38th International Conference of the Chilean Computer Science Society (SCCC), Concepcion, Chile.","DOI":"10.1109\/SCCC49216.2019.8966423"},{"key":"ref_4","unstructured":"Wolter, K., Schieferdecker, I., Gallina, B., Cukier, M., Natella, R., Ivaki, N., and Laranjeiro, N. (2019). From Monolithic Architecture to Microservices Architecture. Proceedings of the ISSRE Workshops, IEEE. Available online: http:\/\/dblp.uni-trier.de\/db\/conf\/issre\/issre2019w.html."},{"key":"ref_5","doi-asserted-by":"crossref","first-page":"4213","DOI":"10.1109\/TSE.2023.3287297","article-title":"Decomposition of Monolith Applications Into Microservices Architectures: A Systematic Review","volume":"49","author":"Abgaz","year":"2023","journal-title":"IEEE Trans. Softw. Eng."},{"key":"ref_6","doi-asserted-by":"crossref","unstructured":"Al-Debagy, O., and Martinek, P. (2018, January 21\u201322). A Comparative Review of Microservices and Monolithic Architectures. Proceedings of the 2018 IEEE 18th International Symposium on Computational Intelligence and Informatics (CINTI), Budapest, Hungary.","DOI":"10.1109\/CINTI.2018.8928192"},{"key":"ref_7","doi-asserted-by":"crossref","unstructured":"Ram\u00edrez, F., Mera-G\u00f3mez, C., Bahsoon, R., and Zhang, Y. (2021, January 3). An Empirical Study on Microservice Software Development. Proceedings of the 2021 IEEE\/ACM Joint 9th International Workshop on Software Engineering for Systems-of-Systems and 15th Workshop on Distributed Software Development, Software Ecosystems and Systems-of-Systems (SESoS\/WDES), Madrid, Spain.","DOI":"10.1109\/SESoS-WDES52566.2021.00008"},{"key":"ref_8","doi-asserted-by":"crossref","first-page":"106449","DOI":"10.1016\/j.infsof.2020.106449","article-title":"Understanding and addressing quality attributes of microservices architecture: A Systematic literature review","volume":"131","author":"Li","year":"2021","journal-title":"Inf. Softw. Technol."},{"key":"ref_9","doi-asserted-by":"crossref","first-page":"243","DOI":"10.1109\/TSE.2018.2887384","article-title":"Fault Analysis and Debugging of Microservice Systems: Industrial Survey, Benchmark System, and Empirical Study","volume":"47","author":"Zhou","year":"2021","journal-title":"IEEE Trans. Softw. Eng."},{"key":"ref_10","unstructured":"(2025, February 01). Spring Cloud. Available online: https:\/\/spring.io\/projects\/spring-cloud."},{"key":"ref_11","unstructured":"(2025, February 01). Why You Can\u2019t Talk About Microservices Without Mentioning Netflix. Available online: https:\/\/smartbear.com\/blog\/develop\/why-you-cant-talkabout-microservices-without-ment\/."},{"key":"ref_12","unstructured":"(2025, February 01). Netflix Open Source Software Center. Available online: https:\/\/netflix.github.io\/."},{"key":"ref_13","unstructured":"(2025, February 01). Microhooks: Code and Examples. Available online: https:\/\/github.com\/oiraqi\/microhooks."},{"key":"ref_14","unstructured":"Vernon, V. (2016). Domain-Driven Design Distilled, Addison-Wesley."},{"key":"ref_15","unstructured":"Evans, E. (2014). Domain-Driven Design Reference, Dog Ear Publishing. Available online: http:\/\/domainlanguage.com\/ddd\/reference\/."},{"key":"ref_16","unstructured":"(2025, February 01). Database-per-Service Pattern. Available online: https:\/\/docs.aws.amazon.com\/prescriptive-guidance\/latest\/modernization-data-persistence\/database-per-service.html."},{"key":"ref_17","doi-asserted-by":"crossref","unstructured":"Liu, L., and \u00d6zsu, M.T. (2018). CAP Theorem. Encyclopedia of Database Systems, Springer. [2nd ed.]. Available online: http:\/\/dblp.uni-trier.de\/db\/reference\/db\/c2.html.","DOI":"10.1007\/978-1-4614-8265-9"},{"key":"ref_18","unstructured":"(2025, February 01). Challenges and Solutions for Distributed Data Management. Available online: https:\/\/learn.microsoft.com\/en-us\/dotnet\/architecture\/microservices\/architect-microservice-container-applications\/distributed-data-management."},{"key":"ref_19","first-page":"30","article-title":"Responsive Software Architecture Patterns for Workload Variations: A Case-study in a CQRS-based Enterprise Application","volume":"Volume 2047","author":"Demeyer","year":"2017","journal-title":"Proceedings of the BENEVOL"},{"key":"ref_20","doi-asserted-by":"crossref","unstructured":"Laigner, R., Zhou, Y., and Salles, M.A.V. (2021, January 11\u201315). A Distributed Database System for Event-Based Microservices. Proceedings of the 15th ACM International Conference on Distributed and Event-Based Systems, DEBS \u201921, New York, NY, USA.","DOI":"10.1145\/3465480.3466919"},{"key":"ref_21","doi-asserted-by":"crossref","first-page":"215","DOI":"10.1016\/j.jss.2018.09.082","article-title":"The pains and gains of microservices: A Systematic grey literature review","volume":"146","author":"Soldani","year":"2018","journal-title":"J. Syst. Softw."},{"key":"ref_22","doi-asserted-by":"crossref","first-page":"3348","DOI":"10.14778\/3484224.3484232","article-title":"Data Management in Microservices: State of the Practice, Challenges, and Research Directions","volume":"14","author":"Laigner","year":"2021","journal-title":"Proc. VLDB Endow."},{"key":"ref_23","unstructured":"(2025, February 01). Eventuate Tram. Available online: https:\/\/eventuate.io\/docs\/manual\/eventuate-tram\/latest\/about-eventuate-tram.html."},{"key":"ref_24","unstructured":"(2025, February 01). Jakarta Persistence. Available online: https:\/\/jakarta.ee\/specifications\/persistence\/3.0\/jakarta-persistence-spec-3.0.pdf."},{"key":"ref_25","unstructured":"(2025, February 01). Spring Framework. Available online: https:\/\/spring.io."},{"key":"ref_26","unstructured":"(2025, February 01). Micronaut Framework. Available online: https:\/\/micronaut.io."},{"key":"ref_27","unstructured":"(2025, February 01). Quarkus Framework. Available online: https:\/\/quarkus.io."},{"key":"ref_28","unstructured":"(2025, February 01). Hibernate ORM Framework. Available online: https:\/\/hibernate.org."},{"key":"ref_29","unstructured":"(2025, February 01). EclipseLink ORM Framework. Available online: https:\/\/projects.eclipse.org\/projects\/ee4j.eclipselink."},{"key":"ref_30","unstructured":"(2025, February 01). Byte Buddy: Code Generation and Manipulation Library for Java. Available online: https:\/\/bytebuddy.net."},{"key":"ref_31","unstructured":"(2025, February 01). SonarQube: Code Quality and Security Analysis Tool. Available online: https:\/\/www.sonarsource.com\/products\/sonarqube\/."},{"key":"ref_32","unstructured":"(2025, February 01). JMeter: Functional Behavior and Performance Metering Tool. Available online: https:\/\/jmeter.apache.org\/."}],"container-title":["Computers"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2073-431X\/14\/4\/139\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T17:11:19Z","timestamp":1760029879000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2073-431X\/14\/4\/139"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,4,7]]},"references-count":32,"journal-issue":{"issue":"4","published-online":{"date-parts":[[2025,4]]}},"alternative-id":["computers14040139"],"URL":"https:\/\/doi.org\/10.3390\/computers14040139","relation":{},"ISSN":["2073-431X"],"issn-type":[{"type":"electronic","value":"2073-431X"}],"subject":[],"published":{"date-parts":[[2025,4,7]]}}}