Перейти к содержимому

На чем написано приложение тинькофф

  • автор:

Тинькофф Банк (Мобильное приложение)

2018: Разработка мобильного приложения «Тинькофф Инвестиции»

«Тинькофф Инвестиции» представляют собой сервис по покупке ценных бумаг и валюты. По сути, это упрощенный вариант торгового терминала, который позволяет проводить сделки на Московской бирже и зарубежных площадках — NASDAQ и Нью-Йоркской бирже.

На момент вступления в проект специалистов «Центра Высоких Технологий» приложением занималось всего два программиста со стороны команды «Тинькофф».

Как таковое ТЗ на старте проекта отсутствовало и рождалось в ходе разработки. Дизайн и архитектура приложения остались на стороне заказчика.

Приложение реализовано как для Android, так и для iOS.

  • Android
    • Языки: Java, Kotlin
    • Архитектура: Clean architecture, MVP
    • Фреймворки: Dagger 2, RxJava 2 / RxAndroid, Retrofit, Glide
    • Аналитика: Firebase Analytics, Crashlytics, AppsFlyer
    • Языки: Swift
    • Архитектура: VIPER
    • Фреймворки: Dip, Alamofire, Core Data, RxSwift, RxCocoa, Kingfisher
    • Аналитика: Firebase Analytics, Crashlytics, Amplitude, AppsFlyer

    На чем написано приложение тинькофф

    Рассказываем о жизни команды Тинькофф и делимся вакансиями по IT-направлениям в формате дайджеста.

    Для связи: apply@tinkoff.ru

    Кейсы, митапы, подкасты для IT-экспертов: https://t.me/itstinkoff

    About
    Blog
    Apps
    Platform

    IT’s Tinkoff Crew
    14.5K subscribers

    Давно не рассказывали про наших ребят. Итак, Анатолий, тимлид в DWH, но начинал он свой путь далеко не тимлидом и даже не джуниор-разработчиком.

    Кстати, интересно, что Анатолий уже работал в Тинькофф, уходил, но потом вернулся и стал частью Т-команды по фаст-интервью — буквально за пару дней. Этой историей он поделился у нас в карточках и даже дал несколько полезных советов.

    А ознакомиться со всеми Weekend Offers, которые мы проводим, можно у нас на сайте. Вы проходите все этапы интервью за выходные, и если все супер, получаете оффер в воскресенье или в течение трех рабочих дней.

    Увидимся онлайн ��

    Please open Telegram to view this post
    Please open Telegram to view this post

    Кто «пилит постики» в IT’s Tinkoff Crew? Я — Данила, который ежедневно складывает слова в предложения, элементы в картинки, а еще ищет интересные истории для вас. Приятно познакомиться ��

    Тут, кстати, вышел новый выпуск подкаста My Marketing Machine (МММ), где мы с коллегой из IT’s Tinkoff Аленой приоткрываем закулисье нашей ежедневной работы, рассказываем про технический СММ, а еще про то, почему ИТ — это не просто. Велком к прослушиванию!

    Ах да, еще хотел добавить: так приятно «выйти из тени» и сказать всем и каждому еще раз СПАСИБО за то, что читаете, реагируете и постоянно следите за нами — вы лучшие ��

    Please open Telegram to view this post
    6.0K views edited 15:42

    Не так давно в ТЦР Минска пришла 400-я сотрудница — Виктория, QA-инженер. А потом как понеслось… 401-й, 402-й и вплоть до 408-го коллеги нашей белорусской дрим-тим. Кстати, 408-го зовут Леонид, он .NET-developer!

    Встретили всех, как полагается, душевно — ошибкой ‘404’: просто пока заказывали торт, пришло еще несколько ребят! А дальше все как в тумане: угощение, свечки и «вкусные» беседы о главном — о работе, конечно.

    Ребята, добро пожаловать в Т-команду ��

    Please open Telegram to view this post
    Please open Telegram to view this post

    ⚙️ Помните про оффер за пару дней для SRE-инженеров?

    Да, это реальность! Уже 7-8 октября проведем SRE Weekend Offer для опытных инженеров. Формат быстрый: за выходные пройдете онлайн-интервью, познакомитесь с командой, а после — получите оффер, если звезды сойдутся.

    Откладывать некогда, пора действовать! Наша команда SRE обеспечивает надежность и стабильную работу всей экосистемы Тинькофф: заранее готовит сценарии действий на случаи возможных сбоев, рассчитывает нагрузку на серверы и оптимизирует ее.

    А именно сейчас мы ищем инженеров с опытом от трех лет сразу в несколько проектов. Подробнее о них и будущих задачах — на странице SRE Weekend Offer.

    «Этот день всё же настал», — «Тинькофф Банк» прокомментировал удаление приложений из App Store

    Приложения «Тинькофф Банка» удалили из магазина приложений App Store, что подтвердили в пресс-службе самого банка. Важно отметить, что уже скачанные приложения продолжат работать.

    Этот день все же настал — приложения Тинькофф удалили из App Store. Вот что мы рекомендуем предпринять в этой ситуации. Первое — сохранять спокойствие: уже скачанные приложения будут работать как обычно. Вы можете переводить деньги, пополнять счет и совершать другие операции. Или делать все то же самое в личном кабинете на сайте Тинькофф. Второе — не скачивать приложения из неофициальных источников, это может быть опасно.

    «Тинькофф Банк»

    «Этот день всё же настал», — «Тинькофф Банк» прокомментировал удаление приложений из App Store

    Кроме того, «Тинькофф Банк» пообещал в скором времени опубликовать инструкцию, как безопасно скачать приложения, и ответить на другие важные вопросы.

    Ранее «Тинькофф», «Альфа-Банк» и «Росбанк» официально прокомментировали своё попадание под санкции Евросоюза, заявив, что продолжают работу в нормальном режиме.

    Обзор архитектуры и сервисов Тинькофф-журнала

    cover

    Тинькофф-журнал выпускает статьи уже 5 лет. За это время из блога на Вордпрессе он вырос в большую самодельную систему из десятков проектов и инструментов. Я в Т—Ж управляю разработкой и сегодня в общих чертах расскажу об архитектуре журнала и сервисах, на которых тот работает.

    Сайт Т—Ж работает благодаря разным сервисам:

    scheme

    1. Движок сайта — Меркурий.
    2. Фронтовый монорепозиторий, или просто монофронт.
    3. Соцплатформа.
    4. Урания — образовательная платформа.
    5. Фичеры — калькуляторы, тесты и прочие интерактивы.
    6. Мобильные приложения.
    7. Медиасервис.

    Как устроен Т—Ж изнутри

    Дальше — о том, что делает каждый из этих сервисов и как они взаимодействуют друг с другом.

    Меркурий

    Главное бэкэнд-приложение Т—Ж — его движок. Собственный движок нам понадобился, когда журнал в 2017 году переезжал с Вордпресса. Движок назвали Меркурием в честь древнеримского бога богатства и торговли, потому что мы же журнал про деньги. Написан на Python + Django.

    Меркурий собирает страницы, которые видит читатель журнала. Часть компонентов страницы он переводит в разметку и стили из собственных джанго-шаблонов: контент статьи, страницу о журнале и поисковую выдачу. За компонентами поновее — шапкой, подвалом, профилем и прочим — он ходит в сервис-прослойку, который уже отдает разметку и стили с нашего фронта.

    Меркурий сам хранит и обрабатывает авторский контент — изображения, статьи, редакционную структуру материалов и статистику опубликованного контента. Редакторам и верстальщикам он предоставляет интерфейс для управления всем этим добром — админку.

    Верстальщики набирают статьи журнала в синтаксисе html. Для удобства админка еще поддерживает шорткоды — это как теги, только они разворачиваются в более сложные синтаксические конструкции с особыми стилями. Cписок сервисов из начала статьи в админке записан шорткодом [ol type=milchin][/ol].

    interface

    Интерфейс, с которым работает верстальщик и иногда — редактор.

    dashboard

    Главный экран админки. Та самая кнопка раньше отрубала поиск и рекомендации. Потом мы их оптимизировали, а кнопку оставили из ностальгических соображений.

    guide

    Руководство по верстке материалов из шорткодов и прочего. У верстальщиков есть еще своя методичка в гугл-документах.

    Когда в админке сохраняют статью, по ней проходит типограф. Это скрипт, который меняет часть конструкций в тексте так, чтобы они соответствовали правилам типографики и редполитики журнала. Например, проставляет знак рубля и неразрывные пробелы. Мы воспользовались готовым решением, только переписали пару правил, чтобы результат нам подходил.

    Меркурий кэширует большинство данных: контент, главную, статьи и другие редко меняющиеся страницы. Так мы экономим на дорогих расчетах и отрисовке, чтобы держать больше пользователей онлайн одновременно.

    В журнале встречаются страницы, которые объединяют другие статьи, например:

    • разводящие по тематикам — путешествия, бизнес, интерактивы;
    • подборки — дневники трат, выплаты в пандемию;
    • выдачи по тегу, автору или формату;
    • результаты поиска.

    travel

    Разводящая раздела про путешествия. Сюда автоматически тянутся свежие статьи с этой темой, а блок подборок настраивает редактор.

    custom article kit

    Витрина подборки. Статьи для нее собрал редактор.

    search result

    Результаты поиска, которые собираются автоматически. Сам поиск тоже реализован в Меркурии.

    В апреле 2020 года мы начали тестировать новую версию нашего движка, который мы назвали Ретроградным Меркурием. Мы полностью перебрали код, разбили его на несколько сервисов и затащили новые фичи: веб-сокеты в админке, улучшенный поиск и другие. Пишем тоже на Python, но уже с FastAPI — как и другие крупные бэкенды журнала.

    Монофронт

    Когда мы окончательно переехали с Вордпресса на Меркурий, нам захотелось добавить интерактивности на страницы журнала. Возможности джанго-шаблонов тут ограничены, ведь только на них мы не смогли бы менять контент страниц в рантайме.

    Чтобы не разрабатывать кучу кастомных страниц, решили вложиться в полноценный фронт — Монофронт.

    Моно — потому что в один проект мы собрали:

    • Интерфейс регистрации и авторизации.
    • Комментарии.
    • Футер.
    • Хэдер.
    • Отображение метаинформации материалов.
    • Профиль пользователя.
    • Промобаннер.
    • Формы подписки.
    • Страницу управления подписками.
    • Образовательные курсы.

    frontend mono repository

    Как это выглядит в репозитории.

    В 2020 году хотим сделать из монофронта несколько независимых приложений, вытащить простые виджеты в npm-пакеты, а сложные — в рантайм и поднять дизайн-систему. Пока сделали и развернули шаблонное фронт-приложение, готовимся переносить туда рендеринг материалов. Пишем на React, Redux и TypeScript.

    Соцплатформа

    В Т—Ж есть не только авторский, но и пользовательский контент. Пользователи регистрируются, комментируют статьи, подписываются, связываются с редакцией через специальные анкеты. Все это происходит благодаря соцплатформе.

    Чтобы зарегистрировать или авторизовать пользователя, соцплатформа взаимодействует с АПИ соцсетей. У себя она сохраняет ценные пользовательские данные, в том числе персональные: имя, фамилию, почту.

    Мы разрабатываем интерфейс редактирования данных пользователя в его профиле. Пока он не готов, мы переложили ответственность за модерацию имени и фотографии на соцсети. Отчасти этим же мы решили проблему ботов, потому что соцсети стали просить привязку к номеру телефона. Но остается проблема с тем, что система считает одного человека из разных соцсетей разными пользователями.

    У авторов журнала обычно два аккаунта. Один — в Меркурии, он определяет авторство статей. Второй — в соцплатформе, чтобы отвечать на комментарии. Думаю, в будущем перейдем на один общий аккаунт, а пока только немного облегчили жизнь редакторам: когда к аккаунту автора в соцплатформе привязывают аккаунт Меркурия, оттуда автоматически подтягиваются все его статьи.

    Сообщество не получается развивать без правил. На каждое правило находятся нарушители. Поэтому соцплатформа предоставляет редакторам и модераторам интерфейс для проверки комментариев и бана нарушителей.

    moderation interface

    Модератор может удалить комментарий или замаскировать его часть, если она противоречит законам РФ или правилам пользования сайтом.

    Соцплатформа хранит все комментарии пользователя и сопутствующую информацию: лайки и дизлайки, был ли это комментарий к статье или ответ другому пользователю в треде. Сами комментарии транслируются в Телеграм через специального бота, чтобы модераторы могли быстро среагировать, а редакторы получали обратную связь.

    Часто мы предлагаем читателям поделиться чем-то с редакцией: рассказать о своей профессии, способе вести бюджет или о том, что люто бесит. Тут приходится рулить логикой сохранения ответов на вопросы форм и следить, чтобы они доходили до редакторов. Раньше гуглоформы мы заводили вручную и прикручивали проброс данных в них на фронте, а теперь автоматизировали это в соцплатформе.

    poll editor

    Редактор сам может завести новый опрос, редактировать вопросы, из которых он состоит, и собрать опрос из шорткодов.

    Урания

    В 2019 году мы решили запустить собственную образовательную платформу. Сразу появились новые сущности: студент, курс, урок, экзамен. Чтобы их создавать и редактировать, разработали отдельный бэкэнд и админку — Уранию. Просто захотели продолжить тему античной мифологии. Но вообще чаще мы называем Уранию просто учебником.

    Когда студент регистрируется, мы используем в качестве его идентификатора тот же аккаунт, что уже есть в соцплатформе. Сверху дописываем актуальную почту, курс, который студент проходит, и прогресс обучения. Так мы не смешиваем данные, но при этом можем просто синхронизироваться с соцплатформой. В тех же комментариях рядом используются данные из соцплатформы и учебника — например, чтобы нарисовать пользователю медальку курса, который он прошел. Эти данные удобно забирать по одному айди.

    Контент самих курсов Урания пока берет из Меркурия. Курс состоит из уроков, а урок на самом деле — хитро стилизованная статья. С главными страницами курсов и со страницей всех курсов, которая скоро появится, Урания работает сама.

    invest course main page

    Главная страница курса «А как инвестировать».

    invest course lesson

    Фрагмент урока о том, как выбирать брокера.

    invest course exam

    В конце каждого урока — тесты для закрепления материала. В конце курса — экзамен, тоже в формате теста.

    Обычные тесты в журнале работают только на фронте, но в курсах мы проверяем ответы еще и на бэке. Учебник не только хранит вопросы, варианты ответов и правильные ответы, но и взаимодействует с тестами, потому что это отдельные приложения. Расскажу о них немного подробнее.

    Фичеры

    В Т—Ж выходят калькуляторы, карты, тесты, опросы и другие интерактивные материалы. Это такие отдельные фронтовые приложения. Мы разрабатываем их отдельной командой и не затаскиваем в Монофронт. Фичеры собираются в JavaScript-бандлы, а Меркурий подставляет их на страницы вместе с информацией о конфигах.

    feature loading

    ip-calendar.js содержит всю логику интерактива, который помогает ИП вовремя сдавать отчетность. В полном адресе бандла на CDN содержится хэш. Так мы поддерживаем версионирование интерактивов.

    Большинство интерактивов используются максимум в двух местах: на отдельной странице и внутри статьи на ту же тематику. Но некоторые из них настолько прижились, что мы используем их десятки раз, например:

    currency exchanger

    • Тесты, которые помогают читателям узнать, какого богатства они достойны, или закрепить знания в образовательных курсах.
    • Опросы, которые разжигают дискуссии в комментариях.
    • Обменник валюты, который пересчитывает цену из местной валюты в рубли по актуальному курсу и подставляет значение в статью.
    • Эмодзи-сервис, который подставляет во все браузеры и на все устройства эмодзи из одного набора.

    Обменник валюты переводит все цены в рубли по актуальному курсу. В редакции его называют валютным фичером.

    poll example

    Пример опроса в конце статьи.

    Мобильные приложения

    Пока приложения, которые мы делаем, находятся на стадии разработки или закрытых бета-тестирований. Но кое-что рассказать уже можно.

    Во-первых, клиентские части активно используют все бэкэнды, которые уже есть в журнале: забирают контент из Меркурия, пользователей — из соцплатформы, прогресс студентов — из Урании. Во-вторых, у них появляются свои бэкэнды, которые обрабатывают особый контент приложений и разруливают пуш-уведомления.

    Сами приложения пишем на React Native и TypeScript. Бэкенды — на Node.js и TypeScript.

    course app

    Так выглядит урок курса об инвестициях в мобильном приложении. У приложения отдельный бэкэнд. Там мы обрабатываем контент, который есть только в приложении: аудио уроков и статьи для дополнительного чтения после курса. Этот же бэкэнд используем для пуш-уведомлений.

    journal app feed

    Это первая версия мобильного приложения журнала. Пока главная фича — подписываться на подборки. Бэкэнд этого приложения хранит и обрабатывает пользовательские настройки и тоже отвечает за пуш-уведомления.

    Медиасервис

    Основные медиафайлы в журнале — изображения. Медиасервис проверяет каждое изображение, перегоняет в webp и png, оптимизирует размер, обрезает под шаблоны из конфига и заливает на CDN. В ответ он получает ссылки на результат обработки — изображения разных форматов и размеров, которые получились из исходного. Остальные медиафайлы сервис просто бережно кладет на CDN.

    Медиасервис особенно примечателен тем, что он использует модель serverless. Это не полноценный бэкэнд, развернутый на сервере или в облаке. Он лишь использует облачные функции Гугла и паттерн pub/sub.

    Медиасервис использует соцплатформа для пользовательских картинок в комментариях и профиле. Этой функциональности пока нет на продакшене, но мы работаем над этим.

    Что дальше

    В следующих статьях расскажем подробнее о сервисах, инфраструктуре и командных процессах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Book Your Car Rental HPN — Walk Off the Plane, Drive Away