전체 글
-
[Android] Koin으로 의존성 주입하기Mobile Engineering 2020. 4. 19. 15:19
요즘 안드로이드 프로젝트를 수행하면서 의존성 주입(DI - Dependency Injection)은 필수라 할 수 있습니다. 그래서 코틀린 환경에서 떠오르고 있는 DI Framework인 Koin에 대해서 이야기하고자 합니다. 1. Koin 세팅 최상단의 Project Gradle(ROOT/build.gradle)에 아래와 같이 설정을 추가합니다. buildscript { dependencies { classpath "org.koin:koin-gradle-plugin:$koin_version" } } 그리고 Koin을 사용하는 Module의 Gradle(app/build.gradle)에 아래와 같이 설정을 추가합니다. apply plugin: 'koin' android { packagingOptions ..
-
[Android] No static method metafactoryMobile Engineering 2020. 4. 18. 18:22
Kotlin + Retrofit + OkHttp 예제를 만들고 있는데.. 갑자기 다음과 같은 에러가 나와서 살짝 당황했습니다. java.lang.NoSuchMethodError: No static method metafactory (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar) 원인은 자바의 호환성에 대한 지정이 없었기 때문이었습니다. 그래서 다음과 같이 app:gradle.build에 추가해서 1.8 기준으로 지정해서 해결할 수 있었습니다. android { ... compileOptions { sourceCompatibility JavaVersion.V..
-
[Android] Http 통신을 로그로 기록하기Mobile Engineering 2020. 4. 18. 13:22
How to logging Http communication used by Okhttp? 모바일 프로그래밍을 하다 보면 인증, 로깅등을 위해서 Http 정보를 로그로 출력해야 하는 상황이 있다. Retrofit과 OkHttp를 이용해서 Http 통신에 대한 로그도 출력해보자. Retrofit, OkHttp에 대한 소개와 사용법은 이미 알고 있다고 가정한다. 1. app:gradle.build에 아래와 같이 OkHttp Logging Lib를 추가한다. ... dependencies { ... // OkHttp implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.5.0' // Use for HttpLoggingIntercept..
-
[MSA] 믿는 enum에 발등 찍힌다.Architecture 2020. 4. 7. 22:41
Enum is evil. Enum은 자바에서 상수(이하 코드)를 선언하는 아주 중요하고 전통있는 방법입니다. 저도 이 부분에 대해서는 이견이 없습니다. 하지만 MSA(마이크로 서비스 아키텍처) 환경의 시스템들 사이에서 Enum이 얼마나 큰 걸림돌로 작용하는지 이야기 하고자 합니다. 자바 베이스 시스템을 기준으로 기술하고 있습니다만, 상수에 대한 이슈는 언어와 프레임워크를 초월하는 것으로 이해하시면 좋겠습니다. REST API에서 코드를 전달할때. 자바 개발자들은 상수를 만들때 Enum 타입으로 만들어야 한다는 강박같은 것이 있습니다. 그런데 이런 강박이 시스템간 통신하는 API의 프로토콜에도 그대로 반영되어 나중에 회사의 개발 속도에 발목을 잡는 일이 발생합니다. MSA에서 API를 손쉽게 연동하기 위해..
-
[MSA] 딜레마 - 처음부터 분리해? 말어?Architecture 2020. 4. 1. 23:37
많은 개발자들이 관심을 가지고 있는 마이크로 서비스 아키텍처(MSA)에 대해서 많은 부분을 이야기를 하려고 한다. MSA는 대규모 시스템을 구축하고 확장하기 위해 할 수 있는 최선의 방법이라고 생각한다. (아직까지는..) 그래서 MSA 구조를 도입해서 운영하는 여러 유명한 회사들(쿠팡, 아마존, 넷플릭스등)이 있다. 하지만, MSA를 이미 도입해서 운영하는 관점에서 새로운 프로젝트를 기획하고 설계할때 맞딱뜨리는 질문이 있다. "이번에 착수하는 프로젝트를 위해서 처음부터 신규 시스템을 구축해야 할까? 아니면, 기존 시스템에 추가해서 만들고 나중에 분리할까?" 두가지 선택에 대한 장/단점을 통해서 좋은 방법이 무엇인지 알아보자. 1. 기존 시스템에 추가하고 나중에 분리하는 방식 장점 첫째, 스피드. 즉, 단..