請用此 Handle URI 來引用此文件:
http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/89068
完整後設資料紀錄
DC 欄位 | 值 | 語言 |
---|---|---|
dc.contributor.advisor | 李允中 | zh_TW |
dc.contributor.advisor | Jonathan Lee | en |
dc.contributor.author | 陳力聖 | zh_TW |
dc.contributor.author | Li-Sheng Chen | en |
dc.date.accessioned | 2023-08-16T16:59:47Z | - |
dc.date.available | 2023-11-09 | - |
dc.date.copyright | 2023-08-16 | - |
dc.date.issued | 2023 | - |
dc.date.submitted | 2023-08-08 | - |
dc.identifier.citation | Gradle build tool. https://gradle.org/
Java compiler api. https://docs.oracle.com/javase/8/docs/api/javax/tools/JavaCompiler.html Java compiler tree api. https://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/ Java persistence api. https://docs.oracle.com/javaee/7/tutorial/persistence-intro.html Java reflection api. https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/index.html Javaparser. https://javaparser.org/ Json. https://www.json.org/ Maven build tool. https://maven.apache.org/ Open api specification. https://swagger.io/specification/ schema.org. https://schema.org/ Spring cloud gateway. https://spring.io/projects/spring-cloud-gateway Spring framework. https://spring.io/ Springcloud. https://spring.io/projects/spring-cloud Web service description language. https://www.w3.org/TR/wsdl.html word2vec. https://code.google.com/archive/p/word2vec/ wordsegmentation. https://pypi.org/project/wordsegmentation/ L. Baresi, M. Garriga, and A. De Renzis. Microservices identification through interface analysis. In Service-Oriented and Cloud Computing: 6th IFIP WG 2.14 European Conference, ESOCC 2017, Oslo, Norway, September 27-29, 2017, Proceedings 6, pages 19–33. Springer, 2017 R. Chen, S. Li, and Z. Li. From monolith to microservices: A dataflow-driven approach. In 2017 24th Asia-Pacific Software Engineering Conference (APSEC), pages 466–475. IEEE, 2017 N. Dragoni, S. Giallorenzo, A. L. Lafuente, M. Mazzara, F. Montesi, R. Mustafin, and L. Safina. Microservices: yesterday, today, and tomorrow. Present and ulterior software engineering, pages 195–216, 2017 E. Evans. Domain-driven design: tackling complexity in the heart of software. Addison-Wesley Professional, 2004 M. Gysel, L. K ̈olbener, W. Giersche, and O. Zimmermann. Service cutter: A systematic approach to service decomposition. In Service-Oriented and Cloud Computing: 5th IFIP WG 2.14 European Conference, ESOCC 2016, Vienna, Austria, September 5-7, 2016, Proceedings 5, pages 185–200. Springer, 2016 M.-H. Hsieh. Construct service components from java-based open source projects. Master’s thesis, National Taiwan University, 2021 J.-W. Huang. Generate web application servers with bpel processes. Master’s thesis, National Taiwan University, 2022 S.-W. Huang. Towards a solution to iot interoperability through reverse engineering. Master’s thesis, National Taiwan University, 2017 P. Kolb. Disco: A multilingual database of distributionally similar words. 2008 H. W. Kuhn. The hungarian method for the assignment problem. Naval research logistics quarterly, 2(1-2):83–97, 1955 J. Lee, K.-H. Hsu, S.-P. Ma, and C.-A. Lee. Service discovery through elasticity-based graph matching. 2018 Y.-L. Lin. From requirements to microservice: A domain driven approach with machine learning. Master’s thesis, National Taiwan University, 2023 T.-C. Lu. Develop web applications through service components repacking. Master’s thesis, National Taiwan University, 2022 C. Malzer and M. Baum. A hybrid approach to hierarchical density-based cluster selection. In 2020 IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems (MFI). IEEE, sep 2020 W.-L. Shih. Construct service components from java-based open source projects. Master’s thesis, National Taiwan University, 2022 J.-J. Yu. Construct service components from open source java projects. Master’s thesis, National Taiwan University, 2021 | - |
dc.identifier.uri | http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/89068 | - |
dc.description.abstract | 近年來,微服務架構漸趨流行,其有效改善大型系統的可擴展性和可維護性之特性,使得許多企業與機關將其資訊系統從單體式架構重構成微服務架構。然而,如何將單體式架構進行切分才能獲得最好的切割結果爭論已久,由於其牽扯的層面廣且複雜因此目前尚未有定論,究其根本原因,皆是沒有清楚定義微服務。因此,本篇論文對微服務的架構進行了定義,根據此定義我們提出以解構耦合的方式,藉由分析開源程式中元素的依賴相關性對單體式架構進行切割,自動化地產出微服務。另外我們也依據此架構產出了描述微服務的文件,藉由此文件我們將使用者的需求來做到微服務的需求匹配。 | zh_TW |
dc.description.abstract | In recent years, microservice architecture has gained popularity due to its ability to significantly improve the extensibility and maintainability of large-scale systems. This has led many enterprises and departments to refactor their information systems from monolithic architecture to microservice architecture. However, achieving the best decomposition of monolithic architecture remains a topic of debate, as it involves various complex aspects. One of the root causes is the lack of a clear definition of Microservice and its internal structure. In this research, we aim to address this gap by defining the Microservice structure. Building upon this definition, we propose a decoupling methodology to separate the monolithic architecture into microservices based on the dependencies between program elements in open-source projects, and we automate the process of generating the microservices.
Furthermore, we introduce the Microservice description based on the proposed architecture. This description allows us to perform matchmaking between the microservices and the user’s requirements, facilitating a more efficient and precise service integration process. | en |
dc.description.provenance | Submitted by admin ntu (admin@lib.ntu.edu.tw) on 2023-08-16T16:59:47Z No. of bitstreams: 0 | en |
dc.description.provenance | Made available in DSpace on 2023-08-16T16:59:47Z (GMT). No. of bitstreams: 0 | en |
dc.description.tableofcontents | 口試委員審定書 i
誌謝 ii 摘要 iii Abstracts iv List of Figures x List of Tables xiii Chapter 1 Introduction 1 Chapter 2 Related Work 5 2.1 Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Background Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.1 JavaParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.2 Soot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.3 Reflection API . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.4 JDK Compiler module . . . . . . . . . . . . . . . . . . . . . . 8 2.2.5 Spring Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.6 Hungarian Algorithm . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.7 WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.8 HDBSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Chapter 3 Microservice Definition 10 3.1 Microservice Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 APIs in a Microservice . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Example of a Microservice . . . . . . . . . . . . . . . . . . . . . . . . 12 Chapter 4 Service Decomposition 14 4.1 Service Component Generation . . . . . . . . . . . . . . . . . . . . . 15 4.1.1 Source code parsing . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1.2 Dependency extraction . . . . . . . . . . . . . . . . . . . . . . 15 4.1.3 Service Type Parsing . . . . . . . . . . . . . . . . . . . . . . . 25 4.1.4 DB Object Creation . . . . . . . . . . . . . . . . . . . . . . . 28 4.2 WSDL generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Chapter 5 Service Composition 32 5.1 Dependency Repack . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2 API Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2.1 distance between APIs . . . . . . . . . . . . . . . . . . . . . . 34 5.2.2 cluster APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.3 Service Component Composition . . . . . . . . . . . . . . . . . . . . 36 5.3.1 Query Dependency & dependency Modeling . . . . . . . . . . 36 5.3.2 Configure JavaParser & attach AST to model . . . . . . . . . 39 5.3.3 Clone the element & remove the unnecessary node . . . . . . . 39 5.3.4 Plugin Handler Chain . . . . . . . . . . . . . . . . . . . . . . 40 5.3.5 Write Project and Post Processing . . . . . . . . . . . . . . . 40 5.3.6 Build project and zip . . . . . . . . . . . . . . . . . . . . . . . 41 5.4 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.4.1 Microservice Extractor . . . . . . . . . . . . . . . . . . . . . . 43 5.4.2 Service Invocation . . . . . . . . . . . . . . . . . . . . . . . . 44 Chapter 6 Microservice Matchmaking 48 6.1 Microservice Description Generation . . . . . . . . . . . . . . . . . . 48 6.2 Bounded Context to Microservice Description . . . . . . . . . . . . . 50 6.3 Graph-based Microservice Matchmaking . . . . . . . . . . . . . . . . 53 6.3.1 Distance of keyword node . . . . . . . . . . . . . . . . . . . . 53 6.3.2 Distance of connector node . . . . . . . . . . . . . . . . . . . . 55 6.3.3 Graph Similarity calculation . . . . . . . . . . . . . . . . . . . 55 Chapter 7 Conclusion 57 Chapter 8 Future Work 59 Bibliography 61 | - |
dc.language.iso | en | - |
dc.title | 從單體服務到微服務: 基於解構耦合的方法 | zh_TW |
dc.title | From Monolithic to Microservice: A Dependency Decoupling Approach | en |
dc.type | Thesis | - |
dc.date.schoolyear | 111-2 | - |
dc.description.degree | 碩士 | - |
dc.contributor.oralexamcommittee | 劉立頌;鄭有進;徐國勛;陳錫民 | zh_TW |
dc.contributor.oralexamcommittee | Alan Liu;Yu-Chin Cheng;Kuo-Hsun Hsu;Hsi-Min Chen | en |
dc.subject.keyword | 服務元件,網路服務,網路應用程式重組,微服務,自動化程式碼生成,圖匹配, | zh_TW |
dc.subject.keyword | Service Component,Web Service,Repack Web Application,Microservice,Automatic code generation,Graph-based Matchmaking, | en |
dc.relation.page | 63 | - |
dc.identifier.doi | 10.6342/NTU202303287 | - |
dc.rights.note | 同意授權(全球公開) | - |
dc.date.accepted | 2023-08-10 | - |
dc.contributor.author-college | 電機資訊學院 | - |
dc.contributor.author-dept | 資訊工程學系 | - |
顯示於系所單位: | 資訊工程學系 |
文件中的檔案:
檔案 | 大小 | 格式 | |
---|---|---|---|
ntu-111-2.pdf | 5.11 MB | Adobe PDF | 檢視/開啟 |
系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。