SenioriOSEngineer,SoojinRo_노수진 Class Description
Building a Scalable Architecture to maintain
a stable user & developer experience
with a growing mobile team and app.
Developers' skills are shown in
how well they can handle
bottlenecks in a development process.
For servers, bottlenecks occur
when many users are crowded in a server,
but for mobile, bottlenecks occur
when several developers' codes are crowded
in one program.
Thanks to the scalable architecture,
Grab mobile development team,
which is made of more than
100 iOS developers,
divided into less than 10 big Tech Families
such as Mobility, Food, Payment, CX, etc.
Each team makes use of the features
created by other teams, as well as
provide stable service to consumers,
and were able to increase
the developers' productivity.
Length: 23 videos
(Duration 11h 6m)
- Xcode 13
- Swift Package
※All exercises in this class are based on iOS apps and are done through Mac. Windows users may experience difficulties.
Expert Senior iOS Engineer
Soojin Ro's Profile & Portfolio
How do the 100+ iOS developers at Grab, the biggest Southeast Asian super-app with 180 million users in 8 countries deploy dozens of new features in a month without experiencing bottlenecks every week?
The answer is
Are there any issues your team is struggling with?
It's time to deploy a scalable architecture right away!
As the app or team grows in size, productivity is reduced because of increased build time or frequent code collisions.
Bugs occur more frequently, and the time spent in debugging has increased.
You want to start automation tests (unit tests, UI tests) but don't know how.
The time for a user to run the app for the first time has increased, and the stability of the app has decreased.
What do we need to create a highly scalable architecture?
Learn about the 3 essential concepts & infrastructure
that can create synergy together!
- Method Where Objects are Assembled for Usage
- Designing a Good Architecture Beyond the Type of Framework and Language
Module Level Architecture
- Essential Tasks for the Scalability of an App Architecture
- Increased Speed of Development, Easier Maintenance and Testing
- Concepts and Patterns of Dependency Injection for Loose Coupling
- Ways to Reduce Bugs to Increase Developer Experience
-Types of Tests and Their Strategic Application
- Feature Flags
- Monitoring Quality
- Cases of a Good Development Culture
Project | Create a Mini Super-App
Composition, modularity, and testing to build scalable architectures
Create a real super app thumbnail project and practice step by step!
An iOS app based on Swift has various services within the app (taxi, grocery, etc.) and has its payment platform (Pay).
Each service is separated into modules, so developers from each part do not affect each other, and because there's no source code dependency, parallel development is possible.
The frequently used features in other modules, such as payment and user profiles, are provided to other modules through the interface. No matter how big or complex the features get, it does not affect other modules or developers.
STEP 1. Creating a Complex View and Flow
- Try to break down a view with a complex interaction into composition architecture and assemble it.
- Take advantage of a RIBs architecture that business logic can drive apps and develop complex flows to make them reusable.
STEP 2. Refactoring & Fixing a Module with a Faulty Design
- The codes written in Part 1 are strongly joined in between objects.
- To increase scalability, a new code is added and separated as a module and goes through refactoring to assemble them.
- Learn about things to consider when you provide a module, and fix modules with a faulty design as you deal with the usability of a code and OCP.
STEP 3. Testing in 4 Methods
- Apply 4 tests(Unit Test, Snapshot Test, UI Test, Integration Test) on the codes modularized in Part 2.
- Compare the features of each test and what test should be applied in which situation.
Soojin Ro's Class
Recommended by Experts in the Field
Senior iOS Engineer
Hello, I'm Soojin Ro.
I've created this class
based on my super-app
development experiences with
LINE, Grab, Naver Webtoon, etc.
In this class, we will work on a mini project
as we carry out all the processes in detail,
from implementing super-app features
to refactoring and automated testing.
Let me show you and share how to build
an environment where 100 developers can develop
and go through quick maintenance at the same time.
Momenti / Senior iOS Engineer
DevChat.tv iPhreaks / Panelist
Interactive Multimedia Platform Development
Lectures and other activities
2020 ~ 2021
Grab / Senior iOS Engineer, Engineering Owner
iOS Part Lead in GrabPay Wallet Add Cash Framework 2.0 Development Project
Project Lead and Introduced Flutter for the first time in the Mystery Prize-winning Feature Development Project
P2P Transfer Feature Modularization
2018 ~ 2020
Naver Webtoon / iOS Developer
New Content Paid Model(Free Just For You) Development Lead, Webtoon Recommendation Feature for New Users,App Transition to Universal, Banner Ads Integration and Improvement
Naver Labs / iOS Developer
AWAY In-car Infotainment App, AKI Parent/Guardian App Development
Swift NYC / Speaker
NAVER Tech Concert: Mobile / Speaker
SwiftFest Boston / Speaker
Notable Me App/ Individual project
LINE / Android Developer
LINE Lite Android App Development
Security Card Widget App / Individual project
2015-2017 App Store Selected as Popular App of the Year
Buy now, get unlimited access.
The special offer ends this Friday.
This special offer ends soon.
Buy now and save more!
*Please note that the release date of the course video, the image and content of the curriculum, etc. are subject to change without notice.
Senior iOS Engineer, Soojin Ro
Please share your thoughts as an iOS app developer who has experienced both single-person app development & super-app development, with over 100 iOS app developers.
When I started app development, I developed a security card widget app as an individual project, and it was selected as the App of the Year from 2015 to 2017 by ranking first place in Finance and second overall in the App Store. After that, I participated in large-scale app service development such as LINE and Naver Webtoon. I joined Grab with curious thoughts on how a more complex and large-scale app services abroad handle problems that occur as the size of service grows larger. As I worked as a developer from small to large teams, I felt that the architecture of the app would have to be different as the teams and services grow larger.
Please share with us when you introduced Flutter in the Southeast Asian super-app Grab and led development for a new Mystery Prize-winning feature.
I led several projects as I worked as an iOS developer in Grab, which is the Southeast Asian Uber. When I introduced Flutter for the first time in the team and led the development project for a Mystery Prize-winning feature, I had a deep understanding of composition, which is the most fundamental element of architecture, so I was able to quickly understand the new language and architecture, and apply them to the project.
Please share your experience as a Part Lead of GrabPay Wallet Add Cash Framework 2.0 Development Project iOS.
I was the lead for the iOS part of a framework development project. The goal of this project was to completely reorganize the UI/UX for the users to easily and quickly add cash to their wallet and to extensively support several Southeast Asian countries/banks/ways to add cash. In terms of business, it was extremely important, and the level of technical difficulty was high, but I was running out of time because I joined in the middle of the project.
I redesigned the architecture to unify the development methods with the team members. As a result it accelerated the development speed and we successfully completed the project in time. The average amount of cash added by users has increased after deployment, and the conversion rate increased and set a record (over 95%), successfully reducing the company commission expenses.
Who would you recommend this class to?
I would recommend this class to senior developers with more than 2 years of practical experience in iOS development and someone with experience using one or more architectures in developing an app. Exercises will on iOS apps, but if you have knowledge of Swift syntax, the content on theories learned in class can be applied to mobile apps on other platforms(Android, Flutter, etc.).
This course will use
- Xcode 13
- Swift Package (First party dependency management tool)
- Combine (First party asynchronous+event-based framework)
- RIBs(Architecture framework from Uber)
- XCTest (Test framework)
Please purchase and install these program(s) for an optimized lecture experience.
※All exercises in this class are based on iOS apps and are done through Mac. Windows users may experience difficulties with the class.
- Some knowledge about Swift + understanding of the protocol concept and application experience
- If you have a development experience using one or more iOS architecture(MVC, MVVM, ReSwift, VIPER, RIBs, etc.), you'll gain even more insight.
- This class does not cover basic knowledge on Swift.
※These programs and/or materials will not be provided with the course.
Like this class?
Then check these out!
*This course will open on January 17, 2023 (PST)
*The duration of the class discount may change without prior notice.
*If you complete the payment, you can watch the video immediately by clicking on [My Class] in the upper left corner. Please ensure to fill in your email address correctly, as the payment and class information will be sent to the registered email address.
[How do refunds work?]
If you would like to request a refund because a Class did not meet your expectations, please contact us for the refund (firstname.lastname@example.org) Also, for more detailed information, please review our Refund Policy.
1. Earlybird Class
If you purchase an Earlybird Class and request a refund before the class videos are available, you are eligible to receive a complete refund or the amount paid by you through the Coloso Platform.
2. Purchasing a "Now Available" Class
Up to 14 days after purchase: If you purchase a "Now Available" class and request a refund, you may receive a complete or near-complete refund depending on refund eligibility. Please refer to the Refund Eligibility section below to see if you are eligible for a refund. Please refer to our Refund Policy for more information on the refundable amount.
3. Refund Eligibility
To submit a valid refund request and receive reimbursement for your purchase, you are required to meet each and every one of the following conditions:
(a) you must be a registered User on the Coloso Platform;
(b) you must be the User that enrolled in the Class;
(c) you must request the refund in writing to our support center within 14 days of purchase, and you must provide us the requested information, including but not limited to the information about your Account, Class, and the circumstances of the refund request;
(d) you must have consumed less than three clips of the Class
(e) you must not have downloaded any of our class materials
4. Additional reasons for refund denial
You may not be eligible for any refund in cases where we believe there is refund abuse or fraudulent behavior, including but not limited to the following circumstances where:
(a) a user has requested multiple refunds for a single course
(b) a user has asked for excessive refunds
(c) we detected fraudulent behavior(s) from a User
(d) an account has been reported, banned, or deactivated due to a violation of our Terms.
5. We limit the number of devices that can access an account to 3 each.
Device registration occurs upon accessing a class video. If you wish to change the device you have registered to your account (i.e. you are using a new mobile device), please contact us at email@example.com.
Changes to device registration can happen only once a year. (Your device is registered to your account after you sign in to the account with your device)
Questions about refund?
Please email us here: firstname.lastname@example.org
Would like to request a refund?
Pleaes email us here: email@example.com