You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AppServerMigration, an open-source software solution, analyses Java applications to deliver precise effort estimations in person-days, facilitating a seamless transition from source to target states. This tool adeptly identifies necessary modifications, offers insightful recommendations, and presents a comprehensive HTML report for a well-guided migration. It accelerates the migration journey, eliminating the necessity for re-work, ensuring a successful and efficient transition with minimal setbacks. AppServerMigration employs a rule-based analysis, meticulously examining Java applications according to predefined rules. This method ensures a thorough assessment, enabling precise identification of necessary changes and providing accurate effort estimations. Effort estimations in AppServerMigration leverage QSM's (Quantitative Software Management) industry-standard metrics and incorporate the backtracking technique. Customizations are then applied, drawing from firsthand migration experiences. This tailored approach ensures precise calculations, aligning with project nuances and enhancing the accuracy of migration effort predictions.
5
+
AppServerMigration, an open-source software solution, analyses Java applications to deliver precise effort estimations in person-days, facilitating a seamless transition from source to target states. This tool adeptly identifies necessary modifications, offers insightful recommendations, and presents a comprehensive HTML report for a well-guided migration. It accelerates the migration journey, eliminating the necessity for re-work, ensuring a successful and efficient transition with minimal setbacks.
6
+
7
+
AppServerMigration employs a rule-based analysis, meticulously examining Java applications according to predefined rules. This method ensures a thorough assessment, enabling precise identification of necessary changes and providing accurate effort estimations.
8
+
9
+
**NEW: AI-Powered Analysis** - AppServerMigration now includes AI-powered analysis using Amazon Bedrock, providing intelligent migration recommendations and effort estimations alongside traditional rule-based analysis.
10
+
11
+
Effort estimations in AppServerMigration leverage QSM's (Quantitative Software Management) industry-standard metrics and incorporate the backtracking technique. Customizations are then applied, drawing from firsthand migration experiences. This tailored approach ensures precise calculations, aligning with project nuances and enhancing the accuracy of migration effort predictions.
To use the AI-powered analysis features, you need to configure AWS Bedrock access:
50
+
51
+
#### Prerequisites
52
+
53
+
1.**AWS Account** with access to Amazon Bedrock
54
+
2.**AWS Credentials** configured on your machine (via AWS CLI, environment variables, or IAM role)
55
+
3.**Model Access** - Enable Claude 3.5 Sonnet model in Amazon Bedrock
56
+
57
+
#### Step 1: Configure AWS Credentials
58
+
59
+
Ensure you have AWS credentials configured on your machine. The application will use the default AWS credential provider chain. You can configure credentials using any of these methods:
3.**`summaryreport.html`** - Summary of all analyzed projects with combined estimates
248
+
86
249
### Create custom rules
250
+
87
251
You may create your own rules which can be fed to the rule engine in order to assess to your source files based on your rules. There are 2 files which you need to create `rules.json` and `recommendations.json`. For reference, you can check [oracle-to-postgres-javarules.json](https://github.com/awslabs/app-server-migration/blob/main/src/main/resources/oracle-to-postgres-javarules.json) and [oracle-to-postgres-recommendations.json](https://github.com/awslabs/app-server-migration/blob/main/src/main/resources/oracle-to-postgres-recommendations.json) respectively.
-`analyzer`: Canonical name of the analyzer class. In the above example, we are using [JavaFileAnalyzer.java](https://github.com/awslabs/app-server-migration/blob/main/src/main/java/com/amazon/aws/am2/appmig/estimate/java/JavaFileAnalyzer.java). You may create your own Analyzer by implementing `IAnalyzer` interface.
113
278
-`file_type`: Type of source files which will be assessed
114
279
-`rules`: Array of objects, each corresonding to a `rule`
115
-
- `id`: Rule identifier
116
-
- `name`: Name of the rule
117
-
- `description`: A verbose rule description
118
-
- `complexity`: AppServerMigration identifies the complexity of migration per application either as minor, major or critical, depending on the features that need to be converted to make the application target compatible. If the changes are only in the configurations and not in the code, then it is minor. Major category involves code changes. There might be features specific to the source server which are not supported on the target server. In such scenarios, the whole functionality needs to be re-written. Such categories fall under critical complexity. For instance, trying to migrate a web application from Oracle WebLogic to Apache Tomcat, which has EJB code.
119
-
- `rule_type`: Denotes where to search to find a rule match. In the above example rule, it will look for `import` statements to search for imported packages. The processing logic is coded in the Analyzer.
120
-
- `remove`: Action denoting elimination of attributes present inside it. In the above example, the rule will match against any `import` statement having `package` name either `java.sql.DriverManager` or `oracle.jdbc.driver.OracleDriver`.
121
-
- `recommendation`: Maps to the identifier of recommendation present in the associated `recommendations.json` file.
280
+
-`id`: Rule identifier
281
+
-`name`: Name of the rule
282
+
-`description`: A verbose rule description
283
+
-`complexity`: AppServerMigration identifies the complexity of migration per application either as minor, major or critical, depending on the features that need to be converted to make the application target compatible. If the changes are only in the configurations and not in the code, then it is minor. Major category involves code changes. There might be features specific to the source server which are not supported on the target server. In such scenarios, the whole functionality needs to be re-written. Such categories fall under critical complexity. For instance, trying to migrate a web application from Oracle WebLogic to Apache Tomcat, which has EJB code.
284
+
-`rule_type`: Denotes where to search to find a rule match. In the above example rule, it will look for `import` statements to search for imported packages. The processing logic is coded in the Analyzer.
285
+
-`remove`: Action denoting elimination of attributes present inside it. In the above example, the rule will match against any `import` statement having `package` name either `java.sql.DriverManager` or `oracle.jdbc.driver.OracleDriver`.
286
+
-`recommendation`: Maps to the identifier of recommendation present in the associated `recommendations.json` file.
122
287
123
288
The `recommendations.json` file would look like:
124
289
125
-
```json
290
+
```json
126
291
"recommendations": [
127
292
{
128
293
"id": 1,
@@ -134,31 +299,35 @@ The `recommendations.json` file would look like:
134
299
```
135
300
136
301
Understanding each key of above JSON file:
137
-
-`recommendations`: Array of objects, each representing a recommendation.
138
-
- `id`: Recommendation identifier
139
-
- `name`: Name of the recommendation, which will be displayed on the report
140
-
- `description`: A verbose recommendation description, which will be displayed on the report
141
302
303
+
-`recommendations`: Array of objects, each representing a recommendation.
304
+
-`id`: Recommendation identifier
305
+
-`name`: Name of the recommendation, which will be displayed on the report
306
+
-`description`: A verbose recommendation description, which will be displayed on the report
142
307
143
308
# To run ArangoDB in local (alternative to running arango.sh)
309
+
144
310
---
311
+
145
312
##### Running in-memory graph database ArangoDB
146
313
147
314
`docker run -p 8529:8529 -e ARANGO_ROOT_PASSWORD=openSesame arangodb/arangodb:3.8.3`
148
315
149
316
##### Connecting to ArangoDB UI
317
+
150
318
`http://localhost:8529/`
151
319
152
320
##### You can find the name of the container by running
321
+
153
322
`docker ps`
154
323
155
324
To retrieve the HOST run the following command with container ID obtained from `docker ps`
0 commit comments