Kurumsal Ölçekte Mikroservis Tabanlı Bir Mimarinin Tasarlanması

Kurumsal bir yazılım sisteminin oluşturulması veya dönüşümü, iş ihtiyaçlarının tam olarak tanımlanmasını gerektiren meşakkatli bir işlemdir. İş gereksinimlerinin karşılanabilmesi için iyi düşünülmüş, uygun yazılım mimarisi kararlaştırılmalı ve tasarlanmalıdır. Genel olarak sorunlara çözüm bulmak için takip edilebilecek iki yöntem vardır. Birincisi geleneksel monolitik mimaride olduğu gibi problemi, doğru çözümü bulmak için bir bütün olarak ele almaktır. İkincisi ise problemi daha kolay anlaşılabilen ve çözülebilen küçük parçalara ayırmaktır. Eğer yazılım dünyasında ikinci yöntem takip edilecek olursa, mikroservis mimarisi gündeme gelmektedir. Kurumsal ölçekli yazılım sistemi tasarlanmak istendiğinde, bildiğimiz kadarıyla yazılım mimarilerini değerlendiren, iletişim protokolü, veri modeli ve veritabanının seçimi üzerine yol gösterici deneysel bir araştırma bulunmamaktadır. Bu makalede, kolay ölçeklenebilir, bakım yapılabilir, erişilebilirliği yüksek, güvenilir ve gözlemlenebilir mikroservis tabanlı bir yazılım sistemi tasarlanmıştır. Ayrıca amacına uygun yazılım mimarisi ve modellerini seçmeye yardımcı olabilecek şekilde farklı mimarilerin, iletişim protokollerinin ve veri modellerinin karşılaştırıldığı deneysel çalışmalar sunulmuştur. Tüm makale sadece sunucu servis tasarımı ile ilgili olup istemci tipi ve teknolojileri bu çalışmanın kapsamı dışındadır.

Design of an Enterprise Level Architecture Based on Microservices

Building or transformation of an enterprise software system is an onerous process which requires a precise definition of business demands. Then to enable the satisfaction of business requirements, the well-thought-of and convenient software architecture must be determined and designed. According to common sense, there are two methods to be followed in order to find the right solution for a problem. One is to handle the problem as a whole; like the traditional monolith architecture. The second method is to divide the problem into easily understandable and soluble fine-grains. If the second path is chosen in the software world, microservices architecture can be shown. When the entire enterprise-level system design is considered, to the best of our knowledge, there is no any leading empirical research on the evaluation of software architectures, selection of communication protocol, data formats, and database. In this paper, an easily scalable, maintainable, highly-available, reliable and observable software system is designed by comparing variant architectures, communication methods, and data models that would help to choose the most appropriate architecture or model for the right purpose. All the paper is about designing a backend API system. The client types or technologies are out of scope.

___

  • [1] Internet: M. Fowler, J. Highsmith, The Agile Manifesto, http://users.jyu.fi/~mieijala/kandimateriaali/Agile-Manifesto.pdf, 26.02.2020.
  • [2] Internet: E. Mueller, The Agile Admin, https://theagileadmin.com/what-is-devops/, 24.01.2020.
  • [3] Internet: M. Rose, Teach Target, https://searchcloudcomputing. techtarget.com/definition/cloud-computing, 14.02.2020.
  • [4] R. V. O’Connor, P. Elger, P. M. Clarke, “Continuous software engineering—A microservices architecture perspective”, Software: Evolution and Process, 29(11), 1-12, 2017.
  • [5] J. Bosch, Continuous Software Engineering, Springer, Switzerland, 2014.
  • [6] D. Saff, M. D. Ernst, “An Experimental Evaluation of Continuous Testing During Development”, ACM SIGSOFT Software Engineering Notes, 29(4), 76-85, 2004.
  • [7] D. Saff, M. D. Ernst, “Reducing wasted development time via continuous testing”, 14th International Symposium on Software Reliability Engineering, Denver, USA, 281-292, 17- 20 November, 2003.
  • [8] M. Virmani, “Understanding DevOps & Bridging the Gap from Continuous Integration to Continuous Delivery”, Fifth International Conference on the Innovative Computing Technology, Pontevedra, Spain, 78-82, 20-22 September, 2015.
  • [9] C. M. Aderaldo, N. C. Mendonça, C. Pahl, P. Jamshidi, “Benchmark Requirements for Microservices Architecture Research”, 2017 IEEE/ACM 1st International Workshop on Establishing the Community-Wide Infrastructure for Architecture-Based Software Engineering (ECASE), Buenos Aires, 8-13, 20-22 May, 2017.
  • [10] T. Ueda, T. Nakaike, M. Ohara, “Workload Characterization for Microservices”, 2016 IEEE International Symposium on Workload Characterization (IISWC), Providence USA, 1-10, 25-27 September, 2016.
  • [11] M. Amaral, J. Polo, D. Carrera, I. Mohomed, M. Unuvar, M. Steinder, “Performance Evaluation of Microservices Architectures Using Containers”, 2015 IEEE 14th International Symposium on Network Computing and Applications, Cambridge, USA, 27-34, 28-30 September, 2015.
  • [12] F. Wang, F. Fahmi, “Constructing a Service Software with Microservices”, 2018 IEEE World Congress on Services (SERVICES), San Francisco, USA, 43-44, 2-7 July, 2018.
  • [13] H. Knoche, W. Hasselbring, “Experience with Microservices for Legacy Software Modernization”, Software Engineering and Software Management, 292, 101-102, 2019.
  • [14] J. Bonér, Reactive Microservices Architecture Design Principles for Distributed Systems, O’Reilly Media, USA, 2016.
  • [15] Internet: J. Bonér, D. Farley, R. Kuhn, M. Thompson, The Reactive Manifesto, https://www.reactivemanifesto.org/, 20.02.2020.
  • [16] J. Bonér, Reactive Microsystems The Evolution of Microservices at Scale, Lightbend, USA, 2017.
  • [17] J. Bogner, A. Zimmermann, “Towards Integrating Microservices with Adaptable Enterprise Architecture”, 2016 IEEE 20th International Enterprise Distributed Object Computing Workshop (EDOCW), Vienna, Austria, 1-6, 5-9 September, 2016. [18] M. Söylemez, A. Tarhan, “Mikroservis Mimarisi ve Mimari Faktörleri Üzerine Endüstriyel Bir İnceleme”, Proceedings of the 12th Turkish National Software Engineering Symposium, Istanbul, Turkey, 1-13, 10-12 September, 2018.
  • [19] Y. Yu, H. Silveira, M. Sundaram, “A microservice based reference architecture model in the context of enterprise architecture”, 2016 IEEE Advanced Information Management, Communicates, Electronic and Automation Control Conference , China, 1856-1860, 3-5 October, 2016.
  • [20] A. Yamuç, U. M. Sürme, “Uydu Yer Yazılım Sistemleri için Servis-yönelimli Mimari’den Mikroservis Mimarisine Geçiş Stratejisi”, Proceedings of the 7th Turkish National Software Architecture Conference (UYMK 2018), Istanbul, Turkey, 1- 12, 29-30 November, 2018.
  • [21] W. Tang, L. Wang, G. Xue, “Design of Information System Architecture of Garment Enterprises Based on Microservices”, Journal of Physics: Conference Series, 1168(3), 32128-32135, 2019.
  • [22] C. Pinheiro, A. Vasconcelos, S. Guerreiro, “Microservice Architecture from Enterprise Architecture Management Perspective”, Lecture Notes in Business Information Processing (LNBIP), 356, 236-245, 2019.
  • [23] L. Huang, C. Zhang, Z. Zeng, “Design of a public services platform for university management based on microservice architecture”, Microsyst Technologies, 1-6, 2019.
  • [24] A. Akbulut, H. G. Perros, “Performance Analysis of Microservice Design Patterns”, IEEE Internet Computing, 23(6), 19-27, 2019.
  • [25] Internet: Spring, Spring Cloud, https://spring.io/projects/spring- cloud, 27.04.2020.
  • [26] Internet: Vert.x, Eclipse Vert.x is a tool-kit for building reactive applications on the JVM, https://vertx.io/, 29.04.2020.
  • [27] Internet: Dubbo, A high performance Java RPC framework, https://dubbo.apache.org/en-us/, 30.04.2020.
  • [28] N. Dragoni, S. Giallorenzo, A. L. Lafuente, M. Mazzara, F. Montesi, R. Mustafin, L. Safina, “Microservices: Yesterday, Today, and Tomorrow”, Present and Ulterior Software Engineering, M. Mazzara, B. Meyer, Springer International Publishing, Zurich, Switzerland, 195-216, 2017.
  • [29] M. Villamizar, O. Garcés, L. Ochoa, H. Castro, L. Salamanca, M. Verano, R. Casallas, S. Gil, C. Valencia, A. Zambrano, M. Lang, “Infrastructure Cost Comparison of Running Web Applications in the Cloud Using AWS Lambda and Monolithic and Microservice Architectures”, 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid), Cartagena, Colombia, 179-182, 16-19 May, 2016.
  • [30] A. Messina, R. Rizzo, P. Storniolo, A. Urso, “A Simplified Database Pattern for the Microservice Architecture”, The Eighth International Conference on Advances in Databases, Knowledge, and Data Applications, Lisbon, Portugal, 35-40, 26-30 June, 2016.
  • [31] Internet: A. Nadalin, On monoliths, service-oriented architectures and microservices, https://odino.org/on-monoliths-service- oriented-architectures-and-microservices/, 13.03.2020.
  • [32] Internet: D. Anastasia, Monolith, SOA, Microservices, or Serverless?, https://rubygarage.org/blog/monolith-soa- microservices-serverless, 01.03.2020.
  • [33] Internet: S. Arshed, Monolithic vs SOA vs Microservices — How to Choose Your Application Architecture, https://medium.com/@saad_66516/monolithic-vs-soa-vs- microservices-how-to-choose-your-application-architecture- 1a33108d1469,18.03.2020.
  • [34] Internet: The Open Group, Service-Oriented Architecture What Is SOA, http://www.opengroup.org/soa/source- book/soa/p1.htm#soa_definition, 23.04.2020.
  • [35] M. Richards, Microservices vs. Service-Oriented Architecture, O’Reilly Media, CA, USD, 2016.
  • [36] Internet: E. Evans, GOTO 2015 - DDD & Microservices: At Last, Some Boundaries!,https://www.youtube.com/watch?v=yPvef9R3k-M, 23.04.2020.
  • [37] Internet: J. Lewis, M. Fowler, Microservices, https://martinfowler.com/articles/microservices.html, 26.04.2020.
  • [38] Internet: R. C. Martin, The Clean Code Blog, https://blog.cleancoder.com/uncle- bob/2014/05/08/SingleReponsibilityPrinciple.html, 24.04.2020.
  • [39] G. Granchelli, M. Cardarelli, P. D. Francesco, I. Malavolta, L. Iovino, A. D. Salle, “Towards Recovering the Software Architecture of Microservice-Based Systems”, 2017 IEEE International Conference on Software Architecture Workshops, Gothenburg, Sweden, 46-53, 5-7 April, 2017.
  • [40] W. Hasselbring, G. Steinacker, “Microservice Architectures for Scalability, Agility and Reliability in E-Commerce”, 2017 IEEE International Conference on Software Architecture Workshops (ICSAW), Gothenburg, Sweden, 243-246, 5-7 April, 2017.
  • [41] D. Shadija, M. Rezai, R. Hill, “Towards an Understanding of Microservices”, 2017 23rd International Conference on Automation and Computing (ICAC), Huddersfield, UK, 1-6, 7- 8 September, 2017.
  • [42] O. Zimmermann, “Microservices tenets”, Computer Science - Research and Development, 32(3), 301-310, 2017.
  • [43] D. Taibi, V. Lenarduzzi, C. Pahl, “Processes, Motivations, and Issues for Migrating to Microservices Architectures: An Empirical Investigation”, IEEE Cloud Computing, 4(5), 22-32, 2017.
  • [44] H. Kang, M. Le, S. Tao, “Container and Microservice Driven Design for Cloud Infrastructure DevOps”, 2016 IEEE International Conference on Cloud Engineering (IC2E), Berlin, Germany, 202-211, 4-8 April, 2016.
  • [45] B. Butzin, F. Golatowski, D. Timmermann, “Microservices approach for the internet of things”, 2016 IEEE 21st International Conference on Emerging Technologies and Factory Automation (ETFA), Berlin, Germany, 1-6, 6-9 Semtember, 2016.
  • [46] Internet: F. Montesi, J. Weber, Circuit Breakers Discovery and API Gateways in Microservices, http://arxiv.org/abs/1609.05830, 30.04.2020.
  • [47] S. Newman, Building Microservices Designing Fine-Grained Systems, O’Reilly Media, Sebastopol, CA, 2015. [48] D. Namiot, M. Sneps-Sneppe, “On Micro-services Architecture”, International Journal of Open Information Technologies, 2(9), 24-27, 2014.
  • [49] E. Wolff, Microservices-Flexible Software Architecture, Crawfordsville, Pearson Education, Indiana, USA, 2017.
  • [50] Internet: C. Richardson, Building Microservices: Inter-Process Communication in a Microservices Architecture, https://www.nginx.com/blog/building-microservices-inter- process-communication, 30.04.2020.
  • [51] Internet: D. Jacobson, Why REST Keeps Me Up At Night, https://www.programmableweb.com/news/why-rest-keeps-me- night/2012/05/15, 30.04.2020.
  • [52] Internet: M. Rouse, REST (REpresentational State Transfer), https://searchmicroservices.techtarget.com/definition/REST- representational-state-transfer, 30.04.2020.
  • [53] Internet: RabbitMQ, RabbitMQ is the most widely deployed open source message broker, https://www.rabbitmq.com/, 30.04.2020.
  • [54] Internet: C. Richardson, Service Discovery in a Microservices Architecture, https://www.nginx.com/blog/service-discovery-in-a- microservices-architecture, 30.04.2020.
  • [55] S. Sobernig, U. Zdun, “Inversion-of-Control Layer”, Proceedings of the 15th European Conference on Pattern Languages of Programs (EuroPLoP'10), Irsee, Germany, 1-22, 7-11 July, 2010.
  • [56] Internet: R. Chandramouli, Security Strategies for Microservices- based Application Systems, https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.80 0-204-draft.pdf, 30.04.2020.
  • [57] Y. Sun, S. Nanda, T. Jaeger, “Security-as-a-Service for Microservices-Based Cloud Applications”, 2015 IEEE 7th International Conference on Cloud Computing Technology and Science (CloudCom), Vancouver, Canada, 50-57, 30 November-3 December, 2015.
  • [58] Internet: D. Yu, Y. Jin, Y. Zhang, X. Zheng, A survey on security issues in services communication of Microservices‐enabled fog applications,https://onlinelibrary.wiley.com/doi/full/10.1002/cpe. 4436, 30.04.2020.
  • [59] Internet: Sumo Logic, Improving Security in Your Microservices Architecture, https://www.sumologic.com/insight/microservices- architecture-security/, 30.04.2020.
  • [60] Internet: OAuth, OAuth 2.0, https://oauth.net/2/, 30.04.2020.
  • [61] Internet: Auth0, Introduction to JSON Web Tokens, https://jwt.io/introduction, 30.04.2020.
  • [62] V. Heorhiadi, S. Rajagopalan, H. Jamjoom, M. K. Reiter, V. Sekar, “Gremlin: Systematic Resilience Testing of Microservices”, 2016 IEEE 36th International Conference on Distributed Computing Systems (ICDCS), Nara, Japan, 57-66, 27-30 June, 2016.
  • [63] Internet: Microsoft, Bulkhead Pattern, https://docs.microsoft.com/en- us/azure/architecture/patterns/bulkhead, 28.04.2020.
  • [64] E. Edling, E. Östergen, An analysis of microservice frameworks, Bachelor, Linköping University, Department of Computer and Information Science, 2017.
Bilişim Teknolojileri Dergisi-Cover
  • ISSN: 1307-9697
  • Yayın Aralığı: Yılda 4 Sayı
  • Başlangıç: 2008
  • Yayıncı: Gazi Üniversitesi Bilişim Enstitüsü