전체 글
-
2023년 7월 회고회고 2023. 8. 12. 15:04
# 서론 무더위가 기승하기 시작한 7월, 올해 들어 가장 열심히 살았던 한 달이 아닌가 싶다. 바디 프로필을 조금씩 준비하면서 운동을 7일 중 5일 정도 꾸준히 했던 것 같고(헬스랑 러닝이랑 축구) 특별한 약속이 없다면, 저녁 개인 공부도 카페에서 2~3시간 정도하고 집에 들어갔던 것 같다. 퇴사할 때면 설렁 설렁 못 쉬었던 휴식을 챙긴다고 하는데 아직 내 생격상 그런 심적인 여유는 없는 것 같다 ㅎㅎ; 다시 본론으로 넘어가서 7월에 일어난 굵직한 일들은 아래와 같다. EstSoft 에서의 마지막 출근과 퇴사 SIPE 동아리 활동 # EstSoft 에서의 마지막 출근과 퇴사 처음 회사에 도착했을 때, '내가 잘할 수 있을까?'라는 막연한 두려움을 가지고 있었는데 1년 6개월이란 시간동안 개발자로서 그리고..
-
Reactive Streams 여정기(2부) - JVM 과I/OSpring 2023. 8. 6. 22:29
1. JVM과 I/O 1.1. 개요 이번 편에서는 JVM에서 I/O 를 어떤 방식으로 처리하는지에 대해서 알아보고자 합니다. I/O Multiplexing JVM 환경에서의 I/O 기술 Java I/O Java NIO Java AIO Reactor Pattern 과 Reactive Streams 그리고 Reactive Programming Spring과 I/O Multiplexing 구현 기술 Netty와 Armeria 구현 기술 이전 편과 마찬가지로, Java I/O 그리고 NIO 더 나아가서 NIO2(AIO)에 대해서 학습은 했지만 정확히 어디서 어떻게 사용하고 왜 이렇게 발전을 했는지에 대해서 개념을 잡아가기 힘들다고 생각합니다. 필자도 2019년 처음 개발 공부를 접하면서 학습한 내용이지만 지금에..
-
Reactive 여정기(1부) - I/O Multiplexing 과 Asynchronous I/O 그리고 Event LoopSpring 2023. 7. 26. 23:58
1. I/O Multiplexing 1.1. 개요 I/O Multiplexing 이란 단어는 어디서 한 번쯤 들어보았지만 실제 어떤 기술인지 그리고 어디서, 어떻게 활용 되는지에 대해서 모르는 경우가 많습니다. 그래서 이번 포스팅에서는 비전공자 관점으로 최대한 쉽게 풀어서 설명을 해보려 합니다. 우선, 포스팅 할 내용과 관련해서 시리즈로 작성하려 하는데 전체적인 구상은 아래와 같습니다. I/O Multiplexing JVM 환경에서의 I/O Multiplexing 구현 기술 Spring과 I/O Multiplexing 구현 기술 Netty와 Armeria 구현 기술 1.2. 어디서 사용되는가? 어떤 지식을 학습하고 체득하기 위해서는 나무가 아니라 숲을 볼 줄 알아야 하는 것이라 생각합니다. 단순히 개념점..
-
2023년 6월 회고회고 2023. 7. 18. 02:26
# 서론 다사다난했던 6월, 정확히는 올해 상반기가 지나갔다. 나에게 있어서 여러 도전들이 싹을 자라 이제 열매를 맺어가고 있는 한 달이라고 생각한다. 개발적인 도전 : BeMe 론칭 이직 준비 그리고 합격 : 커리어적인 도전 새로운 커뮤니티 : SIPE 동아리 활동 # BeMe 론칭 https://kbeme.ai/ beMe - 하기 전에 가기 전에 미리보는 내 쌍꺼풀! beMe는 ESTsoft만의 고도화된 Photo-Realistic 기술을 활용하여 다양한 쌍꺼풀 실사 데이터를 기반으로 나에게 가장 잘 어울리는 자기다움을 찾도록 도와주는 AI 퍼스널 브랜딩 앱입니다. kbeme.ai 2022년, 약 1년간 맡았던 Teamup 프로젝트를 잠시 내려놓고 신규 프로젝트를 진행했다. 주니어로서 신규 서비스에 ..
-
FCM과 함께 춤을(발행 보장)Spring 2023. 7. 16. 01:12
1. 시작하기에 앞서 FCM 과 함께 춤을(1차 튜닝) 1. 기존 Push 메시지 방법 기존 작성된 Push 메시지 전송 로직은 100개의 메시지 전송이 필요하다고 가정했을시 아래와 같이 동작하고 있었다. 100번을 각각 전송 100번에 대한 Blocking 발생 이 같은 문 kwj1270.tistory.com 이전 포스팅에서 FCM 의 성능을 향상시키기 위한 방법에 대해서 기술했다. 사실 더 좋은 방법들도 많고 개선될 여지가 있으나, 이는 추후에 다루려고 한다. 이번 편에서는 이전 포스팅에 이어서 FCM 메시지를 어떻게 보장시킬까? 에 대해 정리하려고 한다. 이 또한, 100% 효율적이고 좋은 방법인지는 잘 모르겠으나 방법 중 하나라고 봐주면 감사드린다. 2. 개요 네트워크 통신이 이루어진다면 언제든 ..
-
FCM 과 함께 춤을(튜닝)Spring 2023. 6. 3. 01:03
1. 기존 Push 메시지 방법 기존 작성된 Push 메시지 전송 로직은 100개의 메시지 전송이 필요하다고 가정했을시 아래와 같이 동작하고 있었다. 100번을 각각 전송 100번에 대한 Blocking 발생 이 같은 문제를 개선하고자 아래와 같이 고민했다. 100번을 배치성으로 전송 페이지네이션이 필요할 경우, 이를 여러 쓰레드로 분리하여 전송 실제로 FCM 은 1번의 배치 메시지 전송시 1000개 까지만 허용한다. 2. 1차 튜닝 포인트(비동기) 2-1. Async 설정 스프링에서 비동기 스레드풀을 사용하는 방법은 간단하다. HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 단 주의점이 위와 같이 단순 설정시 기본 설정값으로 단일 스레드를 사용한다.(등록된 빈 환경 마다 ..
-
MockK 에 대해서 알아보자(기초편)Tool 2023. 4. 10. 19:41
개요 MockK 에 대한 설명만을 진행하기에 테스트와 관련된 부분은 설명이 없는점 양해 부탁드립니다. 다만, Junit 기반으로 쉽게 확인할 수 있도록 코드를 정리해놓았으니 Junit 에 대한 내용이 필요하시다면 아래 링크를 통해 확인하면 좋을 것 같습니다. https://github.com/backend-sprout/java-test/tree/main/JUnit Mocking이 필요한 이유 애플리케이션이 데이터베이스를 사용, 외부 API 호출, 자사 플랫폼의 API 를 호출할만큼 복잡해졌다 가정한다. 애플리케이션의 기능들을 검증하기 위해 외부 API 호출과 같은 작업들도 테스트해야 한다. 하지만, 테스트를 진행함에 있어 매번 외부 API 호출과 같은 작업을 하는 것은 매우 복잡하고 번거로운 일이다. 특..
-
MongoDB PersistenceNoSQL 2023. 4. 6. 17:00
개요 사내에서 신규 서비스를 준비하게 되면서 MongoDB 를 도입하기로 했다. 합리적이라 판단이 들었고 Azure 의 Cosmos DB 를 통해 구현할 예정이다. 하지만, 항상 기술 선택에 있어 정말 이 기술이 우리의 비즈니스 요구사항과 맞는 것인가도 있지만 고가용성과 일관성은 어떻게 보장이 되어야 하는것인가에 대해서 고민은 필수적이라 생각한다. 그래서 이번 포스팅에는 MongoDB의 일관성과 관련한 공부해본 내용을 적어보려한다. MongoDB 일관성 관련 계층 Single Document : 원자성 보장 및 Replica 로 Eventual Consitence 보장 Transaction : 여러 작업에 대한 원자성 보장 단, 추천하지 않는 기능 Replica Set Member Replica Set ..