본문 바로가기

전체 글

(8)
Spring 4.3 미만 버전에서 의존성 주입시 주의할 점 Spring 4.2.3이 적용된 프로젝트에서 Controller, Service들을 Kotlin으로 convert 시아래와 같은 오류가 발생함No default constructor found; nested exception is java.lang.NoSuchMethodException Spring 4.2.3 버전에서는 Kotlin을 공식적으로 지원하지 않아 아래와 같이 의존성 주입하여 해결함As Is@Controllerclass ExampleController( private val exampleService: ExampleService) { ... ....} ToBe@Controllerclass ExampleController @Autowired constructor( private v..
Java에서 KT 클래스 변환 시 팁 Git 이력 유지1. 변환파일 우클릭하여 'Convert java file to kotlin file' 실행2. git commit 할 때 'Extra commit for . java > .kt renames' 옵션 체크 후 git push* 패키지 이동 후 'Convert java file to kotlin file' 실행 하면 'Extra commit for . java > .kt renames' 옵션이 나타나지 않는 Intellij 버그가 있으니 유의할 것!! KT로 변환 후 Intellij Alert 해결Gradle clean, build 실행하면 Alert 사라짐
Spring에 Ant Build 적용 시 문제점 1. KAPT(Kotlin Annotation Process Tool) 미적용 Kotlin에서 제공하는 Annotation으로 작성된 코드들을 Aspect를 통해 로깅 시 동작 안해서 Interceptor로 대체할 수 있는 로직들은 변경해서 수정함
Java, Kotlin Ant 빌드 라이브러리 다운로드 경로 kotlin-compiler-1.9.21.zip 다운로드 https://github.com/JetBrains/kotlin/releases 필수 라이브러리 목록 (kotlin 1.9.21 기준) kotlin-compiler-1.9.21.zip 압축 푼 후 아래 라이브러리만 사용해야함 - annotations-13.0.jar - kotlin-ant.jar - kotlin-compiler.jar - kotlin-preloader.jar - kotlin-reflect.jar - kotlin-runner.jar - kotlin-script-runtime.jar - kotlin-stdlib.jar - trove4j.jar ** 이외 라이브러리 추가 시 ant build 실패함!! Ant b..
Layered Architecture vs Hexagonal Architecture Layered Architecture 장점 Layer간 응집성을 높이고 의존도를 낮출 수 있음 - 상위 계층은 하위 계층을 호출하는 단방향성 유지 - 상위 계층은 하위 계층으로부터 영향받지 않게 구성 - 하위 계층은 자신을 호출하는 상위 계층을 알지 못하게 구성 시스템 분석이 용이함 계층간 구조가 나누어져 있어 재사용성이 높음 계층별 테스트가 용이함 단점 신규 비지니스 추가 시 Repository → Service → Controller 순서대로 개발되기 쉬운 구조라 비지니스 로직에 우선하기 어려움 ORM 사용시 비지니스 로직이 데이터엑세스 로직과 강하게 연결됨 프리젠테이션 layer 테스트 하기가 어려움 제약사항을 따르지 않아 특정 계층에 로직이 집중 될경우 유지보수 비용 증가 및 확장성 떨어짐 장점 ..
NodeJS Vs Spring NodeJs Spring 장점 싱글스레드, 비동기 IO 처리에 빠름 CPU 부하가 적고, 많은 커넥션을 동시에 처리해야 하는 구조에 적합 빠른 빌드와 실행 속도 개발자 진입 장벽이 낮음 정형화 되어 있어 일정 수준의 품질을 보장함 (기본적인 디자인패턴(AOP, DI, 추상화 등)을 강제적으로 사용하게 함) 유지 보수가 쉬움(숙달 될경우) 개발자가 비지니스 로직에만 집중하게 함으로써 개발시간 단축할 수 있음 의존성이 낮아 Test code 적용하기 용이함 단점 Single thread 모델이기 때문에 하나의 작업에 시간이 오래 걸리면 시스템 전체 성능이 저하됨 에러가 발생할 경우 프로세스 자체가 죽어버리므로 주의해야함 다음 할일을 콜백 함수로 넘겨야하다보니 중첩코드가 발생해서 코드 복잡도가 올라갈 수 있음..
Monolithic Architecture VS Micro Service Architecture 서비스의 비지니스나 팀구성등의 환경에 따라 MA 또는 MSA가 더 나은 아키텍쳐 일수 있음 단순히 일반적인 상황에서 특징을 비교했을 뿐 실제 아키텍쳐는 서비스에 맞게 설계가 필요하다고 봄 Monolithic Architecture 개념 전통적인 웹 개발 아키텍쳐로, 하나의 어플리케이션 내에 모든 로직이 들어가 있는 통짜 구조를 의미 일반적으로 하나의 서비스에 데이터 베이스, 백엔드, 프론드엔드가 포함되어 있음 장점 하나의 어플리케이션만 개발하면 되어 간편 로컬환경에서 개발이 용이 배포 및 테스트가 쉬움 단점 대용량 서비스가 되었을때 빌드와 배포가 오래 걸림 코드의 수정 및 추가가 힘듬 효율적인 자원 관리가 힘듬 scale out이 불가능 Micro Service Architecture 개념 대용량 서비스..
Redis, Kafka를 활용하여 이벤트 기반 아키텍쳐 설계 문제 1. 운영중인 서비스에서 영상제작 등 일부 동작들은 client에서 polling을 통해 완료 여부를 확인하고 있어 client에서도 불필요한 로직이 관리되고 있음 2. 지금은 요청건수가 적어 서버에 문제가 되지 않으나 서비스가 커져 요청건수가 늘어나면 서버 성능 및 서비스 비용에 영향을 줄 수 있음 해결방안 - 응답이 긴 동작은 Rest Api가 아닌 Websocket Api로 대체함 고려할점 - Client와 Session이 맺어진 서버로 메시지 전달 필요 - Websocket Api 사용시 요청에 따라 유지되는 session에 따라 따라 메모리나 성능상의 이슈가 생길 수 있어서 유의해야할듯 As Is 장점 - Media management, Media Process server에서는 Produ..