K-INFO
HU
EN
Belépés

Skálázható rendszerek és fejlesztési folyamatok

Scalable Systems and Development Processes
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Tantárgy neve (magyarul, angolul)
Skálázható rendszerek és fejlesztési folyamatok
Scalable Systems and Development Processes
Tantárgykód BMEVIMIA021
Tantárgyjelleg
Képzési szint
Kurzustípusok és óraszámok (heti/féléves)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 2 0 2
jelleg (kapcsolt/önálló) kapcsolt
Tanulmányi teljesítmény/értékelés típusa vizsga
Tantárgy kreditértéke 2
Tantárgyfelelős
Dr. Pataricza András
beosztás: egyetemi docens
Tantárgyat gondozó oktatási szervezeti egység
Mesterséges Intelligencia és Rendszertervezés Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala
Tantárgy elsődleges mintatantervi jellege
Közvetlen előkövetelmények – Erős előkövetelmény nincs
Közvetlen előkövetelmények – Gyenge előkövetelmény nincs
Közvetlen előkövetelmények – Párhuzamos előkövetelmény nincs
Közvetlen előkövetelmények – Mérföldkő előkövetelmény nincs
Közvetlen előkövetelmények – Kizáró feltétel nincs

Célkitűzés

Tantárgyprogram

Part 1: Building Scalable Products

 

L1: Aspects of scalability and how to measure it.

●     Data storage. Capacity, throughput, load.

●     Parallel computing. Speedup, efficiency.

●     Compute server. Megaflops.

●     Network. Throughput, load, capacity

●     Application load. qps, users

 

L2-L3: Scalable Storage Technologies

●     Sql.

●     Bigtable, Datastore.

●     BigQuery, Cloud storage. Paxos.

 

L4: Distributed Computing

●     Parallel algorithms

●     MapReduce, MillWheel

●     Flume

 

L5: Networking

●     Messaging. Pub/sub

●     Load balancing, DNS

●     Logging, monitoring

 

L6: Computing in the Cloud, Case studies.

●     Google App Engine

●     Amazon Web Services

 

Part 2. Scaling the Engineering Processes

 

L7: Measurements

●     Code. complexity. LOC.

●     Measuring and tracking code health.

●     Size, number of bugs, trends in it.

●     Code size/Organization size

●     Code complexity/Organization complexity

 

L8: Open Source

●     Using open source as a free and infinite resource.

●     Releasing code into open source as a business decision

 

L9-L10: Coding

●     Standards, extensions, libraries. Portability, platform independence.

●     Agile programming. Pair programming.

●     Source Control. Code review. Check-in process.

●     Code reuse. Module replacement, rewrite.

●     Build. Libraries, continuous build.

 

L11-L12: Testing

●     Testing frameworks.

●     Testing during development.

●     Black box, white box, grey box testing.

●     Unit test. System test. Integration test. Performance test. Regression test.

●     Continuous testing.

 

L13-L14: Running the System

●     Monitoring.

●     Minor, major upgrade. Canary, roll-back.

●     Alerts, alarms. Triggering, escalating.

●     Crash recovery. Post mortem.

A key engineering and entrepreneurial challenge is not only to quickly deploy the initial version of a great product but also, upon successful adaption by the market, to scale it up. A product  or product family can be scaled both "horizontally" by adding more feature sets to it and "vertically" attracting more users, on different platforms and in different markets, such as desktop  and mobile, stand-alone and cloud, enterprise and consumer, local and international. How and when to scale a product may be a business decision. The architecture of the code base and the engineering organization must be prepared for these requirements. This course teaches both the software architectural and engineering organizational aspects of building large scale products. It emphasizes the dynamic, evolutionary nature of this process. Continuous innovation, scaling and adaptability are essential for successful companies. They should be prepared to build upon their existing products and engineering processes and organization. The course teaches basic software architectural concepts, technologies and practices to architect products that can be quickly deployed but as the need arises can be smoothly, incrementally scaled. The aim of the course is to introduce to students best practices and technologies to build products that can evolve and scale over time. How to build products that grow from thousands of line of code to millions, developed and maintained from tens of software engineers to tens of thousands with a user base (supported load) from tens of thousands to tens of millions. The course touches upon both engineering processes, such as source control, testing, bug tracking, monitoring and applicable technologies such as networking, load balancing, parallel computing, large scale data repositories.

Tanulmányi eredmények

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Tudás

Nincsenek rögzített tanulási eredmények.

Képességek

Nincsenek rögzített tanulási eredmények.

Attitűd

Nincsenek rögzített tanulási eredmények.

Autonómia és felelősség

Nincsenek rögzített tanulási eredmények.

Oktatási módszertan

The course comprises a series of lectures, 2 homework assignments and readings from online resources. Duration: Weeks 1-7, 2x2 hours   

Tanulástámogató anyagok

Nincs megadva.

A tantárgy teljesítéséhez ajánlott előzetes ismeretek

Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
The course requires basic knowledge in object oriented programming. Familiarity with Java  and/or C++ is advantageous but not required.
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
The course requires basic knowledge in object oriented programming. Familiarity with Java  and/or C++ is advantageous but not required.
Általános szabályok

Nincs megadva általános szabály.

Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Szorgalmi időszakban végzett teljesítményértékelések részaránya

Nincs megadva részarány.

Vizsgaidőszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Vizsgarészek részaránya

Nincs megadva részarány.

Érdemjegy megállapítása

Nincs megadva érdemjegy határ.

Jelenléti és részvételi követelmények

Nincs megadva jelenléti követelmény.

Javítás, ismétlés és pótlás különös szabályai

Nincs megadva.

Rövid leírás

Nincs megadva.

Részletes leírás

Nincs megadva.

Ajánlott tantárgyak

Nincs megadva.

A tantárgy elvégzéséhez szükséges tanulmányi munka

Nincs megadva munkaidő bontás.

Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
Tantárgykövetelmények hatályosságának vége:
Tantervi elhelyezés

Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.