분류 전체보기
-
[Redis] Redis 소개와 특징📖 개발 공부/redis 2023. 8. 4. 21:50
패스트캠퍼스의 "백엔드 개발자를 위한 한 번에 끝내는 대용량 데이터 & 트래픽 처리 초격차 패키지 Online." 강의와 그외에 추가로 정리한 내용입니다. 목차 1. Redis의 정의 2. In-memoryDB로서의 Redis 3. Key-value store로서의 Redis 4. Redis 사용 사례 Redis의 정의 Remote Dictionary Server (원격 Dictionary 방식으로 데이터를 저장하는 서버) Redis는 빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다. Storage: 데이터 저장소(데이터 관점) 프로그램이 종료되더라도 데이터가 남아있게 된다. Database: 전통적은 DBMS의 역할을 수행 (영속성 관점) 영속성: 데이터 저장해두고 유실하지 않도록 한다. 데이..
-
RPC, gRPC, stub📖 개발 공부 2023. 8. 3. 22:23
RPC RPC는 Remote Procedure Call의 약자로 분산 네트워크 환경에서 조금 더 직관적인 프로그래밍을 가능하게 해주기 위해 등장하였다. Server-Client Model에서 상세한 정보를 감추고 개발자는 각 로직에 집중할 수 있게, Client와 Server는 메소드를 호출하는 것처럼 개발하면 된다. caller/callee 개발자가 필요한 비즈니스 로직을 생성하고 정의된 IDL(interface definition language)로 작성하여 stub 을 호출한다. Stub RPC에서 클라이언트와 서버 간에 통신을 하기 위해 Stub이 사용된다. Stub compiler 가 IDL 파일을 읽어 원하는 language 로 생성하고 파라미터를 변환(Marshalling)/역변환(Marsh..
-
[Kotlin] @Synchronized 어노테이션 동작 방식📖 개발 공부/kotlin 2023. 8. 3. 00:50
한줄요약: @Synchronized 어노테이션은 AOP와 관련된 게 아니라 synchronized JVM 메서드임을 알려주는 역할을 한다! 동시성 이슈 강의 스터디를 할 때 나는 코틀린으로 변환해서 코드를 작성하였다. 재고시스템으로 알아보는 동시성이슈 해결방법 인프런 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 보면서 정리한 내용입니다. 재고시스템으로 알아보는 동시성이슈 해결방법 - 인프런 | 강의 동시성 이슈란 무엇인지 알아보고 처 ayoung0073.tistory.com 이때 synchronized 키워드를 쓸 수 없어 같은 동작을 하는 @Synchronized 어노테이션을 붙였다. 그리고 스터디 발표가 당청되어 내가 작성한 코드를 보며 발표를 하던 중..! 스터디를 같이 하는 팀원이 물었다. ..
-
재고시스템으로 알아보는 동시성이슈 해결방법📖 개발 공부 2023. 8. 2. 01:17
인프런 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 보면서 정리한 내용입니다. 재고시스템으로 알아보는 동시성이슈 해결방법 - 인프런 | 강의 동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다., 동시성 이슈 처리도 자신있게! 간단한 재고 시스템으로 차근차근 배워보세요. 백엔드 개발자라면 꼭 알아야 할 동시성 이슈 www.inflearn.com 실습한 레포지토리 👉 https://github.com/ayoung0073/stock 코틀린으로 작성 mysql, redis, mongo 세 커밋으로 나누어서 코드 작성 동시성 문제 동시성 문제란 동일한 자원에 대해 여러 스레드가 동시에 접근 하면서 발생하는 문제다. 재고시스템에서 재고 감소 로직에서 동시성 문제가 발생할 수 있다. Synchroni..
-
[Kotlin] toBoolean(), toBooleanStrict()📖 개발 공부/kotlin 2023. 7. 26. 22:35
한줄 요약 문자열이 "true", "false"인 경우에만 Boolean 타입을 반환하고, 나머지는 예외 던지는 걸 기대한다면, toBoolean()이 아니라 toBooleanStrict() 을 사용하자. 코틀린에서 문자열(String)은 타입 변환을 해주는 확장 함수를 제공한다. toByte() toShort() toInt() toLong() toFloat() toDouble() toBoolean() 테스트 코드를 짜다가 생각치 못한 부분에서 버그를 발견했다. “random”.toBoolean() 은 어떤 값을 반환할거라 예상하는가? 한번 생각해보자. 나는 당연히 IllegalArgumentException 예외가 던져질 줄 알았다. 하지만 예상과 다르게, false 를 반환하는 것을 알 수 있다. f..
-
CQRS 패턴📖 개발 공부 2023. 7. 25. 22:31
단일 모델의 단점 주문 내역 조회 기능을 구현하기 위해서는 여러 애그리거트에서 데이터를 가져와야 한다. 주문 내역 조회 페이지는 로딩이 빨라야하는데 여러 도메인 모델을 가져오기 때문에 Select를 여러번 날리게 되고 결과적으로 느려지게 된다. 이러한 구현의 복잡도를 낮추는 간단한 방법은 상태 변경을 위한 모델과 조회를 위한 모델을 분리하는 것이다. 상태를 변경하는 범위와 상태를 조회하는 범위가 정확하게 일치하지 않기 때문에 단일 모델로 두 종류의 기능을 구현하면 모델이 불필요하게 복잡해진다. 단일 모델을 사용할 때 발생하는 복잡도를 해결하기 위해 사용하는 방법이 있는데, 그것이 CQRS이다. CQRS는 Command Query Responsibility Segregation의 약자로 상태를 변경하는 명..
-
[Flutter] App Lifecycle (라이프사이클)📖 개발 공부/flutter 2023. 7. 23. 11:58
이전 포스팅에서 Flutter의 Stateless Widget과 Stateful Widget을 알아보았다. [Flutter] Stateless Widget / Stateful Widget 앱 생명 주기의 생성, 렌더링, 업데이트 및 종료 방식을 알아야지 앱 생명 주기를 기반으로 코드를 이해하는 데 도움이 된다. Flutter의 모든 것이 Widget으로 이루어져 있어 생명 주기에 앞서 Flutter ayoung0073.tistory.com 이번엔 상태가 변하는 Stateful Widget을 기준으로 LifeCycle을 살펴보도록 하자! 앱 생명주기(라이프사이클) 단계 앱은 다음과 같은 상태의 LifeCycle을 가진다. createState() initState() didChangeDependencies..
-
[Flutter] Stateless Widget / Stateful Widget📖 개발 공부/flutter 2023. 7. 22. 17:44
앱 생명 주기의 생성, 렌더링, 업데이트 및 종료 방식을 알아야지 앱 생명 주기를 기반으로 코드를 이해하는 데 도움이 된다. Flutter의 모든 것이 Widget으로 이루어져 있어 생명 주기에 앞서 Flutter의 Widget에 대해 알아보자. Widget Flutter에는 크게 2가지 유형의 위젯이 있다. Stateless Widget Stateless Widget은 런타임에 크게 변경되지 않는 위젯이다. 그렇기 때문에 상태(State)를 다룰 필요가 없으며, 영구적으로 변하지 않는 변수, 버튼, 심볼 등과 같은 표현 요소를 나타내거나 앱에서 데이터를 가져오는 데에 쓰인다. 이러한 위젯은 build 메서드를 오버라이드하여 위젯을 반환한다. Stateless 위젯은 UI가 데이터의 변경에 의존하지 않는..