본문 바로가기

분류 전체보기152

[Redis] 레디스를 메시지 브로커로 사용하기 메시지 브로커의 필요성- 여러 모듈이 서로 느슨하고 적절하게 연결시킨 구조를 선호하는데, 이떄 탄탄한 상호작용이 필요해 메시지 브로커를 필요로 한다.- 서비스 간 커넥션이 실패하는 상황은 언제나 발생할 수 있으며, 되도록 비동기 통신하는 것을 권장한다.- 메시지를 어딘가에 쌓아 둔 뒤 나중에 처리할 수 있는 채널을 만들어 주는 것, 이것이 메시지 브로커의 핵심 역할이다. 메시지 브로커 타입1. 메시징 큐- Producer: 데이터를 생성하는 쪽- Consumer: 데이터를 수신하는 쪽  2. 이벤트 스트림- Publisher: 데이터 생성- Subscriber: 데이터 조회 이벤트 큐 vs 이벤트 스트림1. 방향성- 메시지 큐는 생산자가 소비자 큐로 데이터를 직접 푸시. 2곳에서 필요하면 생산자는 2곳으.. 2024. 5. 27.
[망상] AI 시대에서 살아남는 방법 고민 망상글입니다.AI 발전과 대체얼마전 GPT-4o 출시 후 적지 않은 충격을 받았다. 사용해보니 대답 속도도 빠르고 정보 질도 좋으니 사람보다 나을 수 있겠더라. AI가 아직은 특정 부문에서 인간을 대체하기 이르다는 것에 동의한다. 다만 시간이 흘러도 그럴까? 나는 머지 않은 미래에 대부분의 인간은 대체할 수 있을 정도로 기술, 성능이 발전할 것이라 생각한다. (정책과 규제를 제외하고) 로봇과 전쟁로봇 공학 역시 AI와 결합하여 기술 발전 속도가 빨라지고 효용도 늘고 있다. 그릇 수거, 서빙 로봇은 이미 상용화되어 사용되고 있지 않은가? 근데 이것이 인류에게 좋게 작용을 할까? 기술이란 건 결국 필요한 곳에 쓰이기 마련이고 제약은 더 강한 동기가 있다면 의미가 사라지는 것이라 생각하는데... 이 기술은 좋.. 2024. 5. 18.
[회고] 백번 깨우침보다 한 번 행함이 낫다 *백문이 불여일견(百聞而 不如一見)이요, (*백번 듣는 것보다 한번 보는 게 낫고,)*백견이 불여일각(百見而 不如一覺)이며, (*백번 보는 것보다 한번 깨우침이 나으며,)*백각이 불여일행(百覺而 不如一行)이라. (*백번 깨우침보다 한번 행함이 낫다) 완벽한 계획보다 한 번 행함이 낫다. 나는 계획 세우는 걸 꽤 좋아하는 편이다. 인생에서 가장 재미있는 순간이 계획 세울 때 아닐까? 다만 살아온 날을 되짚어보니 꽤 많은 계획들이 시간이 흘러 쓸모가 사라지거나 부채감으로 남아있더라. 그래서 가끔은 내가 세운 계획에 짓눌려 위축되기도 했던 거 같다.  몰입을 위한 큰 그림은 필요하다. 다만 너무 깊은 고민과 계획은 사치라는 것이 내 결론이다. 인생도 애자일하게 살아야한다. 헷갈리지 말자, 계획을 세우지 말자는.. 2024. 5. 18.
[iOS] rsync error: some files could not be transferred 증상아카이브 시 아래 에러 출력rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4f964b34-e7b8-11ee-80f6-fe8bc7981bff/Library/Caches/cohttp://m.apple.xbs/Sources/rsync/rsync/mai 해결1. Readlink 코드 수정https://jpointofviewntoe.tistory.com/157 2. Cocoapod 버전 업그레이드https://github.com/NativeScript/NativeScript/issues/10259#issuecomment-1514613194 2024. 5. 12.
[iOS] error: SDK does not contain 'libarclite' at the path 증상빌드 시 아래 에러 발생error in Xcode File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a 해결팟 타겟 버전을 특정 버전 이상으로 올려서 해결 https://forums.developer.apple.com/forums/thread/728021 Podfile 하단post_install do |installer| installer.generated_projects.each do |project| project.targets.each do |target| target.build_c.. 2024. 5. 12.
[Redis] 5장. 레디스를 캐시, 세션으로 사용하기 TL;DR레디스는 캐시, 세션 용도로 사용되며 캐시는 데이터 저장소의 서브 셋, 세션은 정해진 시간동안 저장되는 정보라는 차이점이 있다.레디스는 평균 읽기 및 쓰기 작업 속도가 1ms이기 때문에 성능 개선이가능하며, 데이터베이스 커넥션 I/O 를 줄여 CPU, 메모리 리소스를 줄일 수 있다.장애 대응 기능을 갖춘 고가용성 솔루션이며, 스케일 아웃을 지원한다.캐시데이터의 원본보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소효과적인 케이스원본 데이터 저장소에서 원하는 데이터를 찾기 위해 검색하는 시간이 오래 걸리거나, 매번 계산을 통해 데이터를 가져오는 것쓰기보다 읽기에 특화된 데이터인 경우캐시에 저장된 데이터가 잘 변하지 않는 데이터인 경우캐시에 저장되는 데이터가 자주 검색되는 데이터인 경우.. 2024. 5. 8.
[Redis] 4장. 레디스 자료 구조 활용 사례 실시간 리더보드배경리더보드: 경쟁자들의 순위와 현재 점수를 보여주는 순위표절대적 리더보드모든 유저를 정렬시켜 상위권만 표시하는 것을 absolute leaderboard 라고 함상대적 리더보드사용자마다 다른 데이터를 보여줌구로 직장인 대상 순위필요상대적 리더보드의 경우 다양한 관점에서 데이터 계산하고 통계 내야하기 때문에 여러 가지 수학적 계산이 빠르게 수행되어야 함관계형 데이터베이스 사용할 경우 항상 정렬해서 가져와야 한다.해결Sorted set 은 항상 정렬해서 저장하기 때문에 매번 정렬할 필요가 없다.ZUIONSTORE로 스코어 합한할 수 있음특정 SET 에 가중치 줄 수 있음최근 검색 기록배경최근 검색 기록유저별로 다른 키워드 노출검색 내역은 중복 제거가장 최근 검색한 5개 키워드만 사용자에게 노.. 2024. 5. 5.
[Redis] 3장. 레디스 기본 개념 TL;DRRedis는 range 검색할 때 end index 를 포함함String최대 512MBBinary-safe 하게 처리되어 이ㅁ지 같은 바이트 값 등 다양한 데이터 저잦ㅇ 가능key-아이템 1대1 연결되는 유일한 자료 구조 → 나머지 자료 구조를 보면 된다커맨드SETOptionsNX: 키 없는 경우XX: 키 이미 있는 경우GETINCR, INCRBY, DECR, DECRBY원자적으로 처리 가능Race condition 방지타이밍 순서에 따라 요청 무시됨SET hello wolrdGET helloList순서를 가지는 문자열 목록최대 12억개스택, 큐로 사용된다특징LPUSH, RPUSH, LPOP, RPOP 커맨드는 당연 O(1)인덱스 들어가면 O(n)커맨드추가LPUSH, RPUSHLINSERT데이터.. 2024. 5. 5.
[Kafka] 컨슈머 그룹 - 토픽 컨슘 관계(?) 삭제 컨슈머 그룹과 특정 토픽의 구독 관계를 끊고 싶은 경우가 있을 수 있다.unsubscribe(구독 토픽 목록에서 제외) 한다고 컨슘 이력, 관계가 사라지는 것이 아니기 때문에 lag은 계속 쌓이게 된다. 만약 모니터링 도구에서 이를 구별하지 못한다면 lag 이 해소되지 않는 상황이라 판단할 것이고 지속적으로 alert 이 발생하게 된다.1. 컨슈머 그룹 삭제컨슈머 그룹에 속한 멤버를 모두 죽인 뒤 컨슈머 그룹 삭제하는 방법.토픽 메시지를 처리 중이던 컨슈머 그룹은 삭제할 경우 오프셋 날라가서 문제 생길 수 있음 → 되도록 지양하는 것이 좋아보임2. 컨슈머 그룹 토픽 오프셋 삭제컨슈머 그룹에 속한 멤버를 모두 죽이고, 특정 토픽에 대한 오프셋 날리는 방법kafka-consumer-groups \ --.. 2024. 5. 2.
[MySQL] MySQL 성능 개선 - 압축 MySQL 압축 기능에 대해 알아본다. DB 성능 개선 방법DB 성능을 개선하는 방법은 여러가지가 있다. 이번에는 인덱스에 이어 압축에 대해 알아보자.인덱스파티셔닝비싼 장비압축기타아래는 압축 테이블 생성 SQL이다. InnoDB, ROW_FORMAT, KEY_BLOCK_SIZE 와 같은 옵션이 있는데 이 글이 끝나면 이해 될 것이다. CREATE TABLE `log` ( ...) ENGINE=InnoDB AUTO_INCREMENT=159282952 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8 COMMENT='로그' 복습https://mystudylab.tistory.com/162디스크는 매우 느리다.논리적 저장 단위. 배경지식 1: 압축압축이란?.. 2024. 4. 25.