Több platform egy kódbázis Tanulságok a Tresorittól. Budai Péter, vezető fejlesztő



Hasonló dokumentumok
iphone és Android két jó barát...

Mobilplatformok Merre tart a világ? Kis Gergely MattaKis Consulting

Mobil készülékek programozása

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Előszó A Windows alkalmazásfejlesztés rövid története A Windows életútja A Windows 8 paradigmaváltása... 16

Crossplatform mobil fejlesztőkörnyezet kiválasztását támogató kutatás

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Címtár Felhő Projektfeladat specifikáció

Mobil Informatikai Rendszerek

Clang Static Analyzer belülről

Mobil Informatikai Rendszerek

mlearning Mobil tanulás a gyakorlatban

Projekt beszámoló. Könyvelési Szakértői Rendszer Kifejlesztése Repetitív Könyvelési Feladatok Szabályalapú Feldolgozására

Projekt beszámoló. NEWSIT News basedearlywarning System forintradaytrading: Hír alapú Korai Figyelmeztető Rendszer Napon belüli Kereskedéshez

Végpont védelem könnyen és praktikusan

Fejlesztői szemmel at K

Microsoft SQL Server telepítése

Scolvo Multi-Unit Retail Management App MURMA

Visual Studio 2012 és MSDN. Csomagok és licencelés

SUSE Linux Enterprise Server 12 Hargitai Zsolt

Fejlesztés, működtetés, felügyelet Hatékony infrastruktúra IBM szoftverekkel

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

A mobil nyelvtanár megvalósításának folyamata

Gyors, kényelmes, típusbiztos

OpenOffice.org irodai programcsomag

Számítógépes munkakörnyezet II. Szoftver

1000 felhasználó 15 országban

Szoftver technológia. Build systems. Cserép Máté ELTE Informatikai Kar 2019.

Iman 3.0 szoftverdokumentáció

IBM WorkLight 5.0 mobil alkalmazás platform

Flex: csak rugalmasan!

GDi Esri Magyarország Felhasználói Konferencia Timár Gábor: Konkurens adatfeldolgozás ArcGIS rendszerben

A Java EE 5 plattform

Szolgáltatás Orientált Architektúra a MAVIR-nál

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

open source, multiplatform, point-and-click adventure games, reverse engeneering, C++, C, Pascal, Assembly, DOS

Szakdolgozati, TDK témajavaslatok

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Jön a WiFi 1000-rel - Üzemeltess hatékonyan!

Nagy bonyolultságú rendszerek fejlesztőeszközei

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

A DOLLÁROS PIZZA TÖRTÉNETE, AVAGY MENNYIT ÉR A BITCOIN?

Vizuális, eseményvezérelt programozás X. V 1.0

ITIL V3 ALAPÚ IT SZOLGÁLTATÁSIRÁNYÍRÁSI RENDSZER BEVEZETÉSE A GPITINER SEGÍTSÉGÉVEL. Sztrida Ákos IT ügyvezető igazgató helyettes ITIL Expert

MOBIL PLATFORMHÁBORÚ. Török Gábor

Alkalmazás technológiai frissítés migrációs és üzemeltetési tapasztalatok

Új technológiák az Ubuntuban. Új fejlesztések Amik egy éven belül jelenhetnek meg az Ubuntuban

Eduroam változások - fejlesztések, fejlődések. Mohácsi János NIIF Intézet HBONE Workshop 2015

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

IV.4. FELHŐ ALAPÚ BIZTONSÁGOS ADATTÁROLÁSI MÓDSZER ÉS TESZTKÖRNYEZET KIDOLGOZÁSA

Java I. A Java programozási nyelv

Újdonságok. Jancsich Ernő Ferenc

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

A szoftverfejlesztés eszközei

VIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC

Kis Gergely MattaKis Consulting Fejlesztői szemmel

Gate Control okostelefon-alkalmazás

Bankkártya elfogadás a kereskedelmi POS terminálokon

Adatbázis kezelő szoftverek biztonsága. Vasi Sándor G-3S

Felhőalkalmazások a. könyvvizsgálatban

Nokia N9 - MeeGo Harmattan bemutatkozik

S, mint secure. Nagy Attila Gábor Wildom Kft.

BusEye online személyre szabott utastájékoztató mobil alkalmazás fejlesztése

Földmérési és Távérzékelési Intézet

Autóipari beágyazott rendszerek Dr. Balogh, András

NETinv. Új generációs informatikai és kommunikációs megoldások

OZEKI Phone System. 4 elengedhetetlen szolgáltatás a jövőbeli vállalati telefonos rendszerek számára. A jövő üzleti telefon rendszere SMS

<Insert Picture Here> Migráció MS Access-ről Oracle Application Express-re

Megújul a Videotorium

Ez a megoldás azért is érdekes, hiszen jelenleg ma a mobil applikációk piacán ez egyedülállónak számít.

Novell ZENworks Configuration Management. Néhrer János konzultáns Novell PSH Kft.

Biztonságos mobilalkalmazás-fejlesztés a gyakorlatban. A CryptTalk fejlesztése során alkalmazott módszerek. Dr. Barabás Péter Arenim Technologies

Veeam Agent for Windows and Linux

Aurum-Protector Law IT csomag. Professzionális IT megoldások kifejezetten az ügyvédek igényei szerint összeállítva elérhető áron

Mobil operációs rendszerek. Készítette: Kisantal Tibor

Tarantella Secure Global Desktop Enterprise Edition

GISopen, Székesfehérvár,

MVC. Model View Controller

Innovation Delivered. Szekeres Csaba. M-Prospect Kft. Fordítási és tolmácsolási üzletágvezető, SDL Trados partner

A szerzõrõl... xi Bevezetés... xiii

Főbb jellemzők INTELLIO VIDEO SYSTEM 2 ADATLAP

Komponens alapú fejlesztés

Elosztott rendszer architektúrák

Szakdolgozat tájékoztató

Folyamatok rugalmas irányítása. FourCorm Kft.

Fejlesztési tapasztalatok multifunkciós tananyagok előállításával kapcsolatban Nagy Sándor

hardver-szoftver integrált rendszer, amely Xwindow alapú terminálokat szervez egy hálózatba

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Párhuzamos és Grid rendszerek

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

Komponens modellek. 3. Előadás (első fele)

Gigabit/s sebess«gű internetkapcsolatok m«r«se b ng«szőben

IV.4. FELHŐ ALAPÚ BIZTONSÁGOS ADATTÁROLÁSI MÓDSZER ÉS TESZTKÖRNYEZET KIDOLGOZÁSA

A L i n u x r u h á j a

Google Web Toolkit. Elek Márton. Drótposta kft.

SDL Trados szervermegoldások. Szekeres Csaba SDL Trados partner M-Prospect Kft.

Code review és continous integration toolok BME-MIT

Átírás:

Több platform egy kódbázis Tanulságok a Tresorittól Budai Péter, vezető fejlesztő

Miről lesz szó? A Tresorit szolgáltatás és platformjainak gyors bemutatása A Tresorit szoftver architektúrája Hogyan épül fel? Miért? Kihívások a köztes réteg fejlesztése során Anekdoták A felhasználói felület és a köztes réteg kapcsolata Belső API Fejlesztési folyamat és szoftver életciklus Útravaló 2

Tresorit - biztonságos kollaboráció 6 platformon Biztonságos kollaborációs szoftver Fájlok tárolása, szinkronizációja és megosztása a felhőben Magas szintű biztonság, kliens oldali titkosítás 6 platform Windows Mac OS X Android ios BlackBerry Windows Phone 3

A Tresorit háromszintű architektúrája ASZTALI APP MOBIL APP Kliens alkalmazások Platform natív eszközkészlet és nyelv CORE LIB Kriptográfiai köztes réteg Core library C++ Beépül a kliensekbe Szerver elérés Tároló és kiszolgáló szerverek Microsoft Azure szolgáltatások SZERVEREK 4

Miért? Titkosítás és gyorsabb fejlesztés Kliens oldali titkosítás Számításigényes műveletek Gépi kódra fordított kód hatékonyabb Jobb sebesség és üzemidő Több kiforrott C/C++ kriptográfiai könyvtár Fejlesztés gyorsítása Jelentős kliensoldali logika Csak egyszer kell ugyanazt megvalósítani Hibalehetőségek minimalizálása Biztonságkritikus szoftvernél elengedhetetlen Kevesebb helyen kell ugyanazt implementálni 5

Miért? Kezelhetőség és csapat Könnyű kezelés és fejlesztés Natív, megszokottabb felhasználói felület A operációs rendszer összes szolgáltatása csak a platform natív nyelvéből érhető el Nem igényel univerzális fejlesztőket Szerverek csak egyféle kliensre készülnek Egyéb tényezők Kezdeti fejlesztőcsapat összetétele Nem elhanyagolható egy startupnál C++11 szabvány elterjedése Sokkal könnyebb fejlesztés, fel sem merült később a váltás 6

Napi kihívások a köztes rétegben C++ fordítás több platformra 1 kódbázis 5 fordító MSVC 18 C++ és C++/CLI módban (Visual Studio 2013), Clang 3.5 (Xcode 6.1), GCC 4.8, GCC 4.9 (Android NDK 10c) 3 standard library Visual C++ runtime, libstdc++, libc++ 4 platform Windows, Mac OS X, Android, ios 4 architektúra x86, x86-64, ARMv5te, ARMv7 11 külső könyvtárat is fordítani kell OpenSSL, libcurl, ICU4C, SQLite és még további 7 7

Kihívások#1 fordítók és standard libraryk Fordítók MSVC Tipikusan megenged nem szabványos kódot is, ami aztán nem fordul a többi platformon C++ és C++/CLI módban más hívási konvenciót fordított, de csak egyetlen függvénynél! Clang Ugyanazt a fájlt fordítva, elsőre összeomlik a fordító, másodszorra hibátlanul lefordítja Néha egy-egy plusz sort bele kell írni, hogy ne omoljon össze fordítás közben Standard libraryk Bizonyos STL osztályok nincsenek, vagy hibásan vannak megvalósítva az egyes implementációkban std::thread, std::future, emplace_back(), std::shared_mutex C++ allokátorok 8

Kihívások#2 platformok és külső könyvtárak Platformok Fájlkezelés Kardinális probléma fájlszinkronizáció során Nem megengedett karakterek Windows fájlnevekben Mac OS X és ios normalizálja a fájlneveket, a Windows és Android nem Fájl lockolás kezelése C++ kivételkezelés hibás megvalósítása véletlen összeomlásokat okozott OS X alatt Külső könyvtárak Próbálkoztunk például boost-tal is, kevés sikerrel boost::thread ugyanúgy hibás Androidon boost::filesystem ugyanúgy platformfüggően működik, mintha natív API-t használnánk 9

Core - kliens kapcsolat: a belső API Belső, objektum-orientált C++ API A cél: köztes réteg objektumai = felhasználói felület modelljei API osztályok logikai elemekhez Felhasználói profil, trezorok, fájlok, stb. Natív wrapper minden platformhoz Androidon Java JNI OS X-en és ios-en Objective-C++ Windowson.NET C++/CLI Kliens alkalmazások natív nyelven 10

Előnyök, hátrányok bevált, de sokat tanultunk Előnyök Egyelőre bevált Objektum-orientált felépítés jól illeszkedik a GUI logikához Átlátható, strukturált API, eseményvezérelt működés Mire kell figyelni? Memóriakezelés A szemétgyűjtés vs, manuális memóriakezelés Többszálúság A belső objektumokat a felhasználói felület felől is lehet olvasni, manipulálni Alaposabban fel kell készülni a többszálú elérésre Hátrányok A funkciók bővülésével összetettebbé válik 11

Fejlesztési folyamat a gyakorlatban Igazi erősségek a gyakorlatban Köztes réteg + kliensek külön fejleszthetők A kliens oldali logika (köztes réteg) külön tesztelhető Nem kell egyidejű release minden platformon Saját életciklus Külön fejlesztőcsapat, külön verziószám Folyamatos integráció Minden módosítás csak review után kerülhet a főágba Automatikus éjszakai tesztek és verziózott build A kliens bármikor adoptálhatja az újabb Core verziókat Kimaradhat Core verzió, több GUI is megjelenhet ugyanazzal a Core verzióval, stb. 12

Útravaló Mit csinálnánk mégegyszer ugyanígy? A különválasztott GUI és köztes réteg a mi esetünkben jó döntésnek bizonyult Újabb platform adoptálása egyre kevesebb ráadás erőfeszítést igényel Mit csinálnánk máshogy? Félig aszinkron API korlátozó tényező Teljesen szétcsatolt, aszinkron, üzenettovábbításon alapuló API 13

Köszönöm a figyelmet! Kérdések?