Cloud Software Applications
Multi-Tier Cloud Software Architecture
CS 3754 Cloud Software Development | Virginia Tech | Fall 2025
Overview
A portfolio of 10 enterprise-style web applications built during CS 3754 Cloud Software Development at Virginia Tech. Each application demonstrates full-stack development using the Jakarta EE (formerly Java EE) ecosystem, following the MVC architecture pattern.
The applications integrate with various public REST APIs to provide real-world data, while implementing core enterprise patterns including dependency injection, JPA persistence, and session management. All applications are deployed on AWS EC2 running WildFly application server.
Technical Highlights
MVC Architecture
Clean separation of concerns with @Named controllers, @Stateless facades (DAOs), and @Entity beans for data modeling.
JPA/Hibernate Persistence
Object-relational mapping with JPQL queries, entity relationships, and transaction management.
REST API Integration
Each app consumes external APIs using JAX-RS client, handling JSON parsing and error states.
AWS EC2 Deployment
Production deployment on WildFly application server with MySQL database backend.
Click any app to open it in a new tab. All applications are deployed and running on AWS EC2.
Jakarta EE Application Structure
src/main/java/
├── controllers/ # @Named CDI beans (JSF backing)
│ ├── GameController.java
│ └── ...Controller.java
├── EntityBeans/ # @Entity JPA models
│ ├── Game.java
│ └── ...Entity.java
├── FacadeBeans/ # @Stateless DAOs
│ ├── GameFacade.java
│ └── ...Facade.java
└── pojo/ # Plain Java objects
└── ApiResponse.java
src/main/webapp/
├── WEB-INF/
│ ├── faces-config.xml
│ └── web.xml
├── resources/
│ └── css/
└── views/ # XHTML pages
├── List.xhtml
└── View.xhtmlController Layer
@Named @SessionScoped beans handle user interactions, form submissions, and view navigation. Injected facades provide data access.
Facade Layer
@Stateless session beans extend AbstractFacade for CRUD operations. EntityManager handles persistence context and transactions.
Entity Layer
@Entity beans map to database tables with JPA annotations. Relationships use @OneToMany, @ManyToOne with lazy/eager fetching.
View Layer
PrimeFaces XHTML templates with JSF EL expressions. DataTables for lists, Dialogs for details, and Chart components for visualization.
Each application integrates with external REST APIs to provide real-world data. Learning to consume, parse, and handle errors from third-party APIs was a core skill developed in this course.
Enterprise Java Development
- •Dependency injection with CDI annotations (@Inject, @Named, @SessionScoped)
- •JPA entity lifecycle management and JPQL query optimization
- •JSF component lifecycle and PrimeFaces component library
- •Application server deployment and configuration (WildFly)
Multi-Tier Cloud Software Architecture
- •REST API consumption with JSON parsing and error handling
- •Database schema design and MySQL administration
- •Session management and user authentication flows
- •AWS EC2 instance setup and application deployment
Why This Matters
While Jakarta EE isn't the stack I use today, it was the perfect starting point for learning modern development practices. The structured, convention-heavy nature of Java EE made concepts like dependency injection, ORM, and MVC architecture click before I moved to more flexible frameworks like FastAPI and Next.js. This course also gave me hands-on AWS deployment experience and solidified my understanding of multi-tier cloud application development.
Acknowledgment
Special thanks to Dr. Osman Balci for teaching CS 3754 and empowering me to deploy web applications for the first time.