Belépés címtáras azonosítással
magyar nyelvű adatlap
angol nyelvű adatlap
Scalable Systems and Development Processes
A tantárgy neve magyarul / Name of the subject in Hungarian: Skálázható rendszerek és fejlesztési folyamatok
Last updated: 2016. március 18.
level software architect
Janos received his degree in Mathematics from ELTE, Budapest, in 1973. He
started his career in the Computer and Automation Institute of the Hungarian
Academy of Sciences where he was Head of a CAD/CAM department. He left for the
USA in 1981. He worked for the CS Department of SUNY at Stony Brook and for a
number of large companies (Wang Laboratories, Lotus, IBM, Modicon.) In this
period in various roles he architected and led engineering teams to build large
scale back-end systems and UI intensive end-user products. (Lotus Notes and
SmartCenter, a desktop electronic publishing system, a graphical front-end for
PLC editing and monitoring.) After 1994 he worked exclusively on
Internet-related technologies. Co-presence server with Ubique (sold to AOL),
SurfLogic, his own startup, a client-side customizable crawler that he sold to
Oracle in 1997, relevance matching engine (Lumapath) and a content delivery
system (Radiance.) In 2004 he joined Google, where he was one of the first 25
engineers hired in New York. He retired in 2015. During his 11 years at Google
he helped to grow the NY organization and led several engineering teams,
building both consumer facing products (AdWords, Maps) and large scale
distributed internal services (network monitoring and management, data
processing pipelines, data mining.) As a senior level architect he learned and
used most of Google's vast technical infrastructure and technologies.
(Prof. Dr. András Pataricza, BME
The course requires basic knowledge in object oriented programming.
Familiarity with Java and/or C++ is
advantageous but not required.
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
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
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.
Part 1: Building Scalable
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
BigQuery, Cloud storage. Paxos.
L4: Distributed Computing
Load balancing, DNS
L6: Computing in the Cloud,
Google App Engine
Amazon Web Services
Part 2. Scaling
the Engineering Processes
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
Standards, extensions, libraries. Portability,
Agile programming. Pair programming.
Source Control. Code review. Check-in
Code reuse. Module replacement,
Build. Libraries, continuous build.
Testing during development.
Black box, white box, grey box
Unit test. System test. Integration
test. Performance test. Regression test.
Minor, major upgrade. Canary,
Alerts, alarms. Triggering, escalating.
Crash recovery. Post mortem.
The course comprises a series of lectures, 2 homework assignments and
readings from online resources.