Master of Permanent Training in Cloud Apps: Development and Deployment of Applications in the Cloud
Madrid, Spain
DURATION
2 Years
LANGUAGES
Spanish
PACE
Full time
APPLICATION DEADLINE
Request application deadline
EARLIEST START DATE
Request the earliest start date
TUITION FEES
EUR 3,550 *
STUDY FORMAT
Distance learning
* price for non-resident non-EU students is only approximate since each academic rate is different
Introduction
At present, cloud computing or cloud computing is becoming popular. This computing paradigm offers organizations a platform for publishing applications on the Internet. Thanks to its services, these applications can be more scalable, fault tolerant and can be updated more frequently and with fewer errors. However, in order to take advantage of the new platforms, it is necessary for the applications to be designed and implemented following a series of patterns and using certain technologies. These applications designed specifically for these new platforms are called cloud native applications, which could be translated as cloud native applications.
Goals
The objective of the master's degree is to present and apply the techniques, tools, platforms and good practices that allow the development and deployment of Internet applications that take advantage of the new trends offered by cloud computing. Unlike other master's degrees in the sector, the objective is to cover the complete application development and maintenance life cycle: development methodologies, software quality, Internet application implementation technologies, cloud computing platforms, and control of the integration and deployment cycle. For this reason, the master's program is divided into four modules that cover all these aspects:
- Module I: Software quality: Design, Architecture, Testing and XP
- Module II: Web services: technologies, protocols, tests and architectures
- Module III: Cloud Native Applications
- Module IV: DevOps, integration and continuous deployment
Admissions
Curriculum
Module I - Software Quality: Design, Architecture, Testing and Xp
- Software Design and Quality
- Patterns, Knowledge and Complexity
- Software, Disciplines and Evolution
- Design, Modular Design and Object Oriented Design
- Patterns and Software Architecture
- Design Patterns
- Creational, Structural, and Behavioral Patterns
- Software Architecture
- Mv Architectural Style*
- Agile Architectural Styles: Hexagonal, Onion, Clean
- Software Testing
- Testing Methodology
- Test Design: Black Box Vs White Box
- Unit Tests
- Doubles in Tests
- Extreme Programming
- Refactoring
- Test Driven Development
- Extreme Programming (Xp)
- Scrum
- Unified Development Process (Pud)
Module II - Web Services: Technologies, Protocols, Tests and Architectures
Duration: 10 Weeks
Syllabus:
- Web Services Technologies and Protocols
- Introduction to Web Services Technologies
- Web Applications
- Restful Apis
- Databases
- Construction and Deployment
- Reactive Programming
- Protocols: Rest, Grpc, Graphql, and Queues
- Cybersecurity
- Identity Management
- Vulnerabilities in Web Services
- Web Services Architectures and Patterns
- Introduction
- Patterns
- Hexagonal and Clean Architecture
- Web Services Testing
- Introduction
- Testing With Spring and Testcontainers
- Rest Api Tests
- Consumer Driven Contract Testing
- Acceptance Tests
- Load Tests
- Interface Testing in Web Applications
- Persistence and Data Analysis
- Relational Persistence
- Multi-model Databases
- Database Evolution
- Nonrelational Persistence
- Introduction to Data Science
Module III - Cloud Native Applications
Duration: 12 Weeks
Syllabus:
- Cloud Computing
- Introduction
- Amazon Web Services
- Cloud Services
- Platform as a Service
- Cloud Native Apps
- Serverless
- Operations
- Security and Privacy in the Cloud
- Containers and Orchestrators
- Docker Containers
- Docker Compose
- Docker Security
- Kubernetes
- Security in Kubernetes
- Kubernetes Applications With Helm
- Development Tools With Kubernetes
- Scalability and Fault Tolerance
- Microservices
- Introduction to Microservices
- Architectures: Ddd, Cqrs and Event Sourcing
- Microservices Patterns
- Communication Between Services
- Saga Transactions
- External Api
- From Monolith to Microservices
Module IV - Devops, Integration and Continuous Deployment
Duration: 6 Weeks
Syllabus:
- Repositories and Development Models
- Software Life Cycle
- Git Version Control
- Development Models: Gitflow and Tbd
- Development With Monorepo
- Continuous Integration and Delivery
- Introduction
- Ci Services: Github Actions and Jenkins
- Static Code Analysis
- Artifact Management
- Continuous Deployment
- Introduction
- Parallel Changes
- Incremental Deployment: Blue-green and Canary
- Continuous Deployment Tools
- Tests in Production
Final Master's Project
After Taking All the Subjects, You Have to Do a Master's Thesis (Tfm). In This Work the Knowledge Learned is Applied and Developed. It is Not a Small "Toy" Project, It is Rather the Perfect Excuse to Delve Into a Topic of Interest to the Student. The Teachers Propose a Series of Topics, but the Students Can Also Propose Projects That Motivate Them. For Example, That Technology That You Never Have Time to Study in Depth, Implement a Specific Architecture That You Have in Mind for Something That You Are Doing at Work, Compare Different Alternatives, Etc. The Final Master's Projects Can Be Carried Out Individually or in Groups of Students, Which Allows Them to Go Further in Their Objectives.
Program Outcome
General skills:
- CG1: Ability to conceive, write, organize, plan and develop projects in the field of computer engineering whose purpose is the conception, development or exploitation of computer systems, services and applications.
- CG2: Ability to define, evaluate and select hardware and software platforms for the development and execution of computer systems, services and applications, according to the knowledge acquired.
- CG3: Ability to conceive and develop centralized or distributed computer systems or architectures integrating hardware, software and networks according to the knowledge acquired.
- CG4: Ability to solve problems with initiative, decision-making, autonomy and creativity. Ability to know how to communicate and transmit knowledge, skills and abilities in the field of development and deployment of software applications.
- CG5: Knowledge for carrying out measurements, calculations, assessments, appraisals, expert reports, studies, reports, task planning and other similar computer work, in accordance with the knowledge acquired.
- CG6: That students have the ability to gather and interpret relevant data to make judgments that include reflection on relevant issues of a social, technical, scientific or ethical nature.
Specific skills:
- CE1: Ability to apply methodologies for software development. Especially extreme programming with its values, principles and good practices.
- CE2: Ability to follow the recommendations of clean code ( clean code ) and good object-oriented design to produce quality code.
- CE3: Ability to design and implement software tests to guide software development and to ensure its quality.
- CE4: Ability to improve the quality of the code so that it can be expanded.
- CE5: Ability to effectively use libraries and frameworks ( frameworks ) for the development of Internet applications.
- CE6: Ability to design and implement communication protocols for Internet applications.
- CE7: Ability to choose the most suitable architectural style for the implementation of Internet applications that are maintainable and easy to test in an automated way.
- CE8: Ability to design, implement and execute functional and non-functional tests of Internet applications.
- CE9: Ability to include the most appropriate user authentication and authorization mechanisms in Internet applications
- CE10: Ability to use good practices to avoid vulnerabilities and mitigate their effects in case they are exploited.
- CE12: Ability to model application data and their relationships using both relational and non-relational database technologies.
- CE13: Ability to choose the most appropriate persistence technologies based on the needs of the application.
- CE14: Ability to know how a distributed, scalable and fault-tolerant persistent system behaves.
- CE15: Ability to design update processes for production applications that require changes in the data structure without affecting the provision of the service.
- CE16: Ability to know the main technologies used in the field of data science and what services they offer for the implementation of applications.
- CE17: Ability to evaluate and choose the most suitable cloud computing provider services for an Internet application based on its needs.
- CE18: Ability to make use of infrastructure technologies as code to manage computer systems and know their advantages compared to traditional models.
- CE19: Ability to use containers to package and distribute Internet applications.
- CE20: Ability to effectively use a container orchestration system for the deployment and management of a container-based Internet application.
- CE21: Ability to update an application in a container orchestrator progressively and without service drop.
- CE22: Ability to design and implement applications using the services provided by cloud providers such as email, databases, file storage, etc.
- CE23: Ability to design, implement and use observability systems for the management of applications in production.
- CE24: Ability to design and implement applications to be scalable and fault tolerant using replication and load balancing services provided by cloud providers and container orchestrators.
- CE25: Ability to effectively apply an architecture based on microservices for the implementation of an Internet application.
- CE26: Ability to design and implement an application using function platforms as a service and determine when they are appropriate compared to other alternatives.
- CE27: Ability to know the set of DevOps practices for automating processes between development and operations teams.
- CE28: Ability to know and choose the different existing alternatives to implement a continuous integration and deployment system.
- CE29: Ability to define tasks in continuous integration and deployment systems to automate the life cycle of source code from the time it is added to the code repository until it is published in production.
- CE30: Ability to manage the artifacts obtained from the source code throughout its life cycle and in its different types of maturity (release, beta, snapshot, etc).
- CE31: Ability to effectively use the tools and technologies available to update a production application without service failure and without errors.