Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Construindo SDKs móveis escaláveis (KMM + Clean...

Avatar for Vinícius Oliveira Vinícius Oliveira
January 03, 2024
43

Construindo SDKs móveis escaláveis (KMM + Clean Architecture) - caso de uso unicoIDTech

Avatar for Vinícius Oliveira

Vinícius Oliveira

January 03, 2024
Tweet

Transcript

  1. #IDTech Single code base for the business logic of your

    apps across your multiple platforms, in pure Kotlin
  2. #IDTech Onde o KMM pode ser usado? • Networking •

    Data Storage • Analytics • Logging • Algoritms • State Management
  3. #IDTech Ecossistema KMM • Ktor • SQLDelight • Koin •

    Apollo • Firebase • Arrow • Kotlinx DateTime
  4. #IDTech Android actual class Platform actual constructor() { actual val

    platform: String = "Android ${android.os.Build.VERSION.SDK_INT}" }
  5. #IDTech Testabilidade package io.unico.kmm.helloworld import kotlin.test.Test import kotlin.test.assertTrue class CommonHelloWorldTest

    { @Test fun testExample() { assertTrue(UnicoHelloWorld().message().contains("Único"), "Check 'Único' is mentioned") } }
  6. #IDTech Android package io.unico.kmm.helloworld.android import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import io.unico.kmm.helloworld.UnicoHelloWorld

    import android.widget.TextView fun greet(): String { return UnicoHelloWorld().message() } class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val tv: TextView = findViewById(R.id.text_view) tv.text = greet() } }
  7. #IDTech iOS import SwiftUI import shared struct ContentView: View {

    let greet = Greeting().greeting() var body: some View { Text(greet) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
  8. #IDTech • Conhecimento técnico do time. Uma feature sendo implementada

    para 3 tecnologias: ios, android e web. • Implementação demorada. •
  9. Evolução da arquitetura As vantagens de utilizar uma arquitetura em

    camadas são muitas, porém podemos pontuar algumas mais próximas dos times de produto: • Possibilidade de diferentes produtos/clientes usarem diferentes funcionalidades da SDK. Hoje o cliente precisa implementar toda a SDK, mesmo que queira utilizar apenas o frame de documentos por exemplo. Deixando seu app mais pesado do que o necessário. • Ganho de produtividade. Um código bem orquestrado demanda menos manutenção. Abaixo um exemplo do que ocorre quando o código cresce de maneira desordenada: Clean Architecture | Arquitetura em camadas FONTE: CLEAN ARCHITECTURE - ROBERT C. MARTIN A modularização da SDK permitirá que o cliente use somente o "pedaço" que ele deseja. Caso o cliente não use todas as nossas funcionalidades, a SDK dele ficará bem mais leve 👏👏👏
  10. Evolução da arquitetura Clean Architecture | Arquitetura em camadas A

    modularização da SDK permitirá que o cliente use somente o "pedaço" que ele deseja. Caso o cliente não use todas as nossas funcionalidades, a SDK dele ficará bem mais leve 👏👏👏 As vantagens de utilizar uma arquitetura em camadas são muitas, porém podemos pontuar algumas mais próximas dos times de engenharia: • Independência de frameworks e bibliotecas • Independência da UI • Independência da Fonte de dados (DataSource) • Novas funcionalidades podem ser adicionadas rapidamente pelo time de desenvolvedores. A modularização da SDK permitirá que o time de engenharia se concentre nas regras de negócio. Provedor de liveness, SI, DB etc serão detalhes.