SlideShare a Scribd company logo
Архитектура	
модели	в	
Сбербанк-Онлайн
ИВАН	КРЫГИН
«СБЕРБАНК-ТЕХНОЛОГИИ»,	ГЛАВНЫЙ	ИНЖЕНЕР
Сбербанк-Онлайн
•Банковское	приложение
•20	млн	активных	пользователей
•50	Разработчиков
•30	команд
Сбербанк-Онлайн
•Переводы
•Умный	помощник
•Уведомления
•Бюджет
•Финансовый	советник
•Запросы
•Прогресс	накоплений
Sbergile
Android
iOS
Аналитики
Платежи
Мои	финансы
Уведомления
Насущные	проблемы
•Программистко-дизайнерское	взаимодействие
•Взаимодействие	логических	слоев
P2P-перевод
Типовые	задачи
•Асинхронная	работа
•Выбор	источника	данных
•База	данных
•Парсинг
•Работа	с	HTTP/HTTPS
•Обработка	результата
Почему	своё?
•Контроль
•Гибкость
•Безопасность
Все	вместе
DefaultManager
<<Интерфейс>>
IManager
<<Интерфейс>>
IP2PApiMapperDefaultP2PApiMapper
<<Интерфейс>>
IAsyncProcessor
+	submit
<<Интерфейс>>
INetworkLoaderHelper
+	T	<T>	sendAndReceive
Менеджеры
•Точка	входа	для	презентера
•Определяют	состав	и	идентификатор	задачи
•Возвращает	клиентам	отложенный	результат
Менеджеры.	Схема.
<<Интерфейс>>
IManager
+	getItemList
+	addItem
+	updateItem
+	deleteItem
DefaultManager
IAsyncProcessor	mAsyncProcessor
IApiMapper	mApiMapper
IDatabaseDAO	mDatabaseDAO
Менеджеры.	Фабрика.
<<Интерфейс>>
IManagerFactory
+	getP2PPaymentsManager
+	getSecurityManager
+	getAnalyticsManager
ManagerFactory
SbolAplication
IManagerFactory	mManagerFactory
Application
Менеджеры.	P2P-платеж
public	interface	IP2PPaymentManager	{
PendingResult<P2PPaymentResponse>	makeP2PPayment(P2PPaymentInfo	info,	boolean force);
PendingResult<P2PPaymentListResponse>	getP2PPPaymentList(P2PPaymentFilter	filter,	boolean force);
}
public	class	DefaultP2PPaymentManager	implements	IP2PPaymentManager	{
@Override
public	PendingResult<P2PPaymentResponse>	makeP2PPayment(P2PPaymentInfo	info,	boolean force)	{
...
}
@Override
public	PendingResult<P2PPaymentListResponse>	getP2PPPaymentList(P2PPaymentFilter	filter,	boolean force)	{
...
}
}
Менеджеры.	P2P-платеж
interface	IManagerFactory {
IP2PPaymentManager	getP2PPaymentManager();
}
public	class	ManagerFactory implements	IManagerFactory {
@Override
public	IP2PPaymentManager	getP2PPaymentManager()	{
return	createP2PPaymentManager();
}
}
Менеджеры.	P2P-платеж
public	class	SbolApplication extends	Application	implements	
IManagerFactory {
IManagerFactory mManagerFactory;
@Override
public	void	onCreate()	{
super.onCreate();
mManagerFactory =	new	ManagerFactory();
}
@Override
public	IP2PPaymentManager	getP2PPaymentManager()	{
return	mManagerFactory.getP2PPaymentManager();
}
}
Менеджер.	P2P-платеж
public	class	P2PPaymentActivity	extends	Activity	implements	View.OnClickListener {
@Override
protected	void	onCreate(Bundle	savedInstanceState)	{
...
IManagerFactory managerFactory =	(IManagerFactory)	getApplication();
mP2PPaymentManager	=	managerFactory.getP2PPaymentManager();
...
}
@Override
public	void	onClick(View	v)	{
mP2PPaymentResult	=	
mP2PPaymentManager.makeP2PPayment(collectP2PPaymentInfo(),	true);
}
}
Асинхронная	работа.	
Требования.
•Природа	задач	скрыта
•Задачи	идентифицируются	по	ключу
•Задачи	могут	быть	выстроены	в	очередь
•Задачи	могут	быть	перезапущены
Асинхронная	работа.	Схема
<<Интерфейс>>
IAsyncProcessor
process return
<<Интерфейс>>
NoExceptionCallable<T>
<<Интерфейс>>
Callable<T>
<<Интерфейс>>
IPendingResult<T>
Асинхронная	работа.	P2P-
перевод
public	class	DefaultP2PPaymentManager	implements	IP2PPaymentManager	{
@Override
public	PendingResult<P2PPaymentResponse>	makeP2PPayment(
final	P2PPaymentInfo	info,
boolean force)	{
return	mAsyncProcessor.submit(
P2PPaymentUris.makeP2PRequestUri(info),
new	NoExceptionCallable<P2PPaymentResponse>()	{
@Override
public	P2PPaymentResponse	call()	{
return	mP2PPaymentApiMapper.makeP2PPaymentRequest(info);
}
},
force);
}
}
База	данных.	Требования.
•CRUD
•Сокрытие	реализации
Базы	данных.	Схема.
SQLiteDAO RealmDAO StubDAO
<<Интерфейс>>
IDAO
+	create
+	read
+	update
+	delete
Парсеры и	сериализаторы.	
Требования.
•Парсинг и	сериализация
•Сокрытие	реализации
Парсеры и	сериализаторы.	
Схема.
<<Интерфейс>>
IParser
+	serialize
+	parse
JacksonParser SimpleXMLParser
Работа	с	HTTP(S)
•Сбор	информации
•Построение	запроса
•Получение	данных
•Обработка	результата
Работа	с	HTTP(S).	Схема.
DefaultP2PApiMapper
IHttpConnector	mHttpConnector
<<Интерфейс>>
IP2PApiMapper
+	makeP2PPayment(P2PPaymentInfo	info)
<<Интерфейс>>
IHttpConnector
+	T	sendAndReceive(Request,	
IHttpResponseReceiver)
Create
<<Интерфейс>>
Request
<<Интерфейс>>
IHttpResponseReceiver
Create
Use Use
<<Интерфейс>>
P2PPaymentResponse
return
ServerEntity
ConnectorStatus
ConnectorExceptionthrow
Работа	с	HTTP(S).	Сбор	
информации	о	запросе
•Части	URL	(хост,	путь,	query-параметры)
•Тело	запроса	(для	POST	и	PUT)
•HTTP-заголовки
Работа	с	HTTP(S).	Тело	
запроса
•form-urlencoded
•Сериализованный объект	в	виде	XML,	JSON
Работа	с	HTTP(S).	Тело	
запроса.	Схема.
Request
+	composeUrl
+	setBodySender(IBodySender	sender)
+	setHeader(String	key,	String	value)
<<Интерфейс>>
IBodySender
+	flushBody(OutputStream	
stream)
FormattedBodySender
IParser	mParser
NameValueBodySender
Map<String,	String>	mValues
Работа	с	HTTP(S).	Сбор	
информации.	P2P-перевод
public	class	DefaultP2PPaymentApiMapper	implements	IP2PPaymentApiMapper	{
@Override
public	P2PPaymentResponse	makeP2PPaymentRequest(P2PPaymentInfo	info)	{
P2PPaymentResponse	result;
NameValueBodySender bodySender =	setupBodySender(info);	
Request	request	=	setupRequest(bodySender);
ExtendedParser parser	=	new	DefaultParserFactory().newXMLParser();	
DefaultHttpResponseReceiver<P2PPaymentResponse>	httpResponseReceiver =
setupHttpResponseReceiver(parser);
try	{
result	=	mHttpConnector.sendAndReceive(request,	httpResponseReceiver);
}	catch	(ConnectorException e)	{
result	=	new	P2PPaymentResponse();
result.setConnectorStatus(e.getConnectorStatus());
}
return	result;
}
}
Работа	с	HTTP(S).	Получение	
данных.
•Преобразование	InputStream в	данные
•Обработка	заголовков	HTTP-ответа
Работа	с	HTTP(S).	Получение	
данных.	Схема.
DefaultHttpResponseReceiver
IParser	mParser
List<IHeaderHandler>	mHeaderHandlers
Class<T>	mClass
<<Интерфейс>>
IHttpResponseReceiver<T>
+	handleResponse(InputStream,	List<String>)
<<Интерфейс>>
IHeaderHandler
+	handleHeaders(Map<String,	List<String>>)
+	T	getResult
Работа	с	HTTP(S).	Получение	
данных.	Алгоритм.
•По	Request	построить	HttpUrlConnection
•InputStream и	заголовки	ответа	передать	в	
HttpResponseReceiver
•Закрыть	connection
•Вернуть	ответ	из	HttpResponseReceiver’а
Обработка	результата.	
Сущность-ответ.
•Данные
•Статус	операции	с	точки	зрения	сервера
•Статус	операции	с	точки	зрения	клиента
•Сообщения	от	сервера
Обработка	результата.	
Обработчик	результата
•Проверяет	валидность ответа
•Показывает	сообщения	об	ошибке
•Показывает	информационные	сообщение
Обработка	результата.	
Схема.
<<Интерфейс>>
IResultChecker<T	extend	ServerEntity>
+ValidationResult	validate(T,	CheckOptions)
ServerEntity
dispatch
CheckOptions
use
ValidationResult
return
Обработка	результата.	Подписка	
на	данные.	Принципы.
•Общая	логика	– прогон	через	ResultChecker
•Специфическая	логика	– вызов	колбеков
Обработка	результата.	
Подписка	на	данные.	Схема.
Activity
WatcherBundle	mWatcherBundle
WatcherBundle
List<IWatcher>	mWatcherList
ContentWatcher
Function	mFunction
<<Интерфейс>>
IWatcher
+	onResume
+	onPause
+	onSaveInstanceState
+	onRestoreInstanceState
ResultChecker	mResultChecker
AbstractContentWatcher
#	onSuccess
#	onFailure
#	onLoadStateChanged
#	onSuccessAndAlertsDismissed
#	onFailureAndAlertsDismissed
Обработка	результата.	P2P-
перевод.
public	class	P2PPaymentActivity
extends	BaseCoreActivity
implements	View.OnClickListener {
private	IP2PPaymentManager	mP2PPaymentManager;
@Override
public	void	onClick(View	v)	{
getWatcherBundle().add(new	P2PPaymentContentWatcher(this,	mResultChecker));
}
private	class	P2PPaymentContentWatcher	
extends	ConditionalContentWatcher<P2PPaymentResponse>	{	… }
}
Обработка	результата.	P2P-
перевод.
private	class	P2PPaymentContentWatcher
extends	ConditionalContentWatcher<P2PPaymentResponse>	{
@Override
protected	PendingResult<P2PPaymentResponse>	obtain(boolean force)	{
return	mP2PPaymentManager.makeP2PPayment(collectP2PPaymentInfo(),	true);
}
@Override
protected	void	onSuccess(IContentWatcher watcher,
P2PPaymentResponse	result,
boolean isAlertsAreShowing)	{
goToSuccessScreen();
}
@Override
protected	void	onFailure(IContentWatcher watcher,
P2PPaymentResponse	result,
boolean isAlertsAreShowing)	{
goToFailureScreen();
}
}
P2P-перевод
Бонус.	Мета-модуль	
аналитики.	Проблемы.
•Вызов	в	презентере – раздувается	презентер
•Вызов	в	менеджере	– раздувается	менеджер
Бонус.	Мета-модуль	
аналитики.	Решение.
•Покрытие	аналитикой	конкретного	модуля	выносится	в	
аналитический	плагин
•Менеджер	аналитики	предоставляет	доступ	к	плагину
•Движок	аналитики	обеспечивает	отправку	события
Бонус.	Мета-модуль	
аналитики.	Схема.
<<Интерфейс>>
IAnalyticsManager
+	onResume
+	onPause
+	addAnalyticsPlugin(int	id,	IAnalyticsPlugin)
+	<T	extends	AnalyticsPlugin>	T	
getAnalyticsPlugin(int	id)
DefaultAnalyticsManager
Map<Int,	IAnalyticsPlugin>	mPlugins
IAnalyticsEngine	mAnalyticsEngine
<<Интерфейс>>
IAnalyticsEngine
+	onResume
+	onPause
+	sendEvent(AnalyticsEvent)
<<Интерфейс>>
IP2PPaymentAnalyticsPlugin
ID
onScreenShown()
AnalyticsEngineWrapper
List<IAnalyticsEngine>	mEngines
DefaultP2PPaymentAnalyticsPluginBaseAnalyticsPlugin
IAnalyticsEngine	mEngine
<<Интерфейс>>
IAnalyticsPlugin
Бонус.	Мета-модуль	
аналитики.
public	class	P2PPaymentActivity
extends	BaseCoreActivity
implements	View.OnClickListener {
@Override
public	void	onClick(View	v)	{
getWatcherBundle().add(new	P2PPaymentContentWatcher(this,	
mResultChecker));
IP2PPaymentAnalyticsPlugin	plugin	=	
getAnalyticsManager().getPluginById(IP2PPaymentAnalyticsPlugin.ID);
plugin.onBuyButtonClick();
}
}
Архитектура	модели.	
Решенные	проблемы.
•Контроль
•Гибкость
•Безопасность
Спасибо	за	
внимание
ИВАН	КРЫГИН.	«СБЕРБАНК	ТЕХНОЛОГИИ»
IAKRYGIN.SBT@SBERBANK.RU

More Related Content

Similar to "Архитектура модели в Сбербанк-Онлайн" Крыгин Иван, Сбербанк-Технологии

Andersen-Portfolio-Latest Projects-ru
Andersen-Portfolio-Latest Projects-ruAndersen-Portfolio-Latest Projects-ru
Andersen-Portfolio-Latest Projects-ru
Sergey Kryvorotchenko
 
a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891
a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891
a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891
Aleksey Sergienko
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
Andrey Smirnov
 
ляпин Bdd и coded ui для прагматиков
ляпин   Bdd и coded ui для прагматиковляпин   Bdd и coded ui для прагматиков
ляпин Bdd и coded ui для прагматиков
Magneta AI
 
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Ontico
 
Презентация компании БМС Софт
Презентация компании БМС СофтПрезентация компании БМС Софт
Презентация компании БМС Софт
БМС Софт
 
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
OWASP Russia
 
Resco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона Витязя
Resco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона ВитязяResco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона Витязя
Resco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона Витязя
Anton Vityaz
 
2011 мастер класс в британке по таск-менеджерам
2011 мастер класс в британке по таск-менеджерам2011 мастер класс в британке по таск-менеджерам
2011 мастер класс в британке по таск-менеджерам
Анна Ковалева
 

Similar to "Архитектура модели в Сбербанк-Онлайн" Крыгин Иван, Сбербанк-Технологии (20)

Andersen-Portfolio-Latest Projects-ru
Andersen-Portfolio-Latest Projects-ruAndersen-Portfolio-Latest Projects-ru
Andersen-Portfolio-Latest Projects-ru
 
a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891
a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891
a3e1917f-9566-4f56-b687-950439a65e27-150519115945-lva1-app6891
 
Andersen-Portfolio-Latest Projects-ru
Andersen-Portfolio-Latest Projects-ruAndersen-Portfolio-Latest Projects-ru
Andersen-Portfolio-Latest Projects-ru
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
 
ляпин Bdd и coded ui для прагматиков
ляпин   Bdd и coded ui для прагматиковляпин   Bdd и coded ui для прагматиков
ляпин Bdd и coded ui для прагматиков
 
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
 
Презентация компании БМС Софт
Презентация компании БМС СофтПрезентация компании БМС Софт
Презентация компании БМС Софт
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
 
Cистема управления рисками на SharуPoint и PowerPivot
Cистема управления рисками на SharуPoint и PowerPivotCистема управления рисками на SharуPoint и PowerPivot
Cистема управления рисками на SharуPoint и PowerPivot
 
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Resco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона Витязя
Resco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона ВитязяResco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона Витязя
Resco mobile CRM - DevDay Kiev, Ukraine 2014 - Презентация Антона Витязя
 
Разработка нового сайта компании «Росгосстрах»
Разработка нового сайта компании «Росгосстрах»Разработка нового сайта компании «Росгосстрах»
Разработка нового сайта компании «Росгосстрах»
 
Современные технологии сайтостроения для решения бизнес-задач
Современные технологии сайтостроения для решения бизнес-задач Современные технологии сайтостроения для решения бизнес-задач
Современные технологии сайтостроения для решения бизнес-задач
 
AgileDays 2016. Внедрение Agile в Банке
AgileDays 2016. Внедрение Agile в БанкеAgileDays 2016. Внедрение Agile в Банке
AgileDays 2016. Внедрение Agile в Банке
 
Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013
 
владивосток форум Deep_see
владивосток форум Deep_seeвладивосток форум Deep_see
владивосток форум Deep_see
 
2011 мастер класс в британке по таск-менеджерам
2011 мастер класс в британке по таск-менеджерам2011 мастер класс в британке по таск-менеджерам
2011 мастер класс в британке по таск-менеджерам
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
 

More from it-people

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
it-people
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
it-people
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
it-people
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
it-people
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
it-people
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
it-people
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
it-people
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
it-people
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
it-people
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
it-people
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
it-people
 

More from it-people (20)

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

"Архитектура модели в Сбербанк-Онлайн" Крыгин Иван, Сбербанк-Технологии