Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    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.

    Budapest University of Technology and Economics
    Faculty of Electrical Engineering and Informatics
    AIT
    Course ID Semester Assessment Credit Tantárgyfélév
    VIMIA021   2/0/2/v 2  
    3. Course coordinator and department Dr. Pataricza András,
    4. Instructors

    Joseph Janos senior level software architect

    Joseph 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

    http://www.mit.bme.hu/eng/general/staff/pataric)

    5. Required knowledge

    The course requires basic knowledge in object oriented programming. Familiarity with Java  and/or C++ is advantageous but not required.

    7. Objectives, learning outcomes and obtained knowledge

    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.

    8. Synopsis

    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.

    9. Method of instruction

    The course comprises a series of lectures, 2 homework assignments and readings from online resources.

    Duration:

    Weeks 1-7, 2x2 hours 

     

    10. Assessment The final grade is based on the quality of home assignments (60%), on the solutions of smaller problems given at lectures (20%) and on the presentation about the topic of the assignments (20%).
    14. Required learning hours and assignment
    Kontakt óra28
    Félévközi készülés órákra 
    Felkészülés zárthelyire 
    Házi feladat elkészítése 12
    Kijelölt írásos tananyag elsajátítása 10
    Vizsgafelkészülés 10
    Összesen 60
    15. Syllabus prepared by Joseph Janos senior level software architect