1편에서 부터 이어지는 내용 2024.03.30 - [일상] - 가상면접사례로 배우는 대규모 시스템 설계 기초 -1 을 읽고 12장. 채팅 시스템 설계요청 사항이 조금 빡세다. DAU 5천만에 일반적으로 알고 있는 모든 메신저의 기능 지원, 메시지 길이 10만자까지 지원해야 한다. 너무 많은 요구 사항이 있고, 대용량 데이터를 저장해야 하는 작업이라 DB부터 실시간성을 지원하기 위한 방법론까지 필요하다. 우선, 채팅 서비스 접속에는 HTTP의 keep alive 헤더를 이용한 방식을 제안한다. 하지만 메시지 수신 시나리오는 조금 더 복잡한 방식을 고려해야 한다. 폴링 방식은 접속한 사용자가 연결이 끊어졌는지 알 수 있는 방법이 없고, 답 해줄 메시지가 없는 경우에도 응답을 대기하다가 타임아웃 후 재연결..
재귀(再歸)란? 주어진 문제를 해결하기 위하여 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 방식. 어떤 루틴이나 프러시저가 자기 자신을 반복적으로 호출하여 문제를 풀어 나가는 알고리즘으로, 이를 이용하기 위해서는 스택을 사용한다. 간단한 루틴을 풀 수 있지만, 처리 속도가 느리고 횟수가 지나치게 많으면 프로그램이 정지하기도 한다. - 네이버 사전 재귀 문제의 대표적인 예로는 피보나치 문제가 있다. 위의 인용에서도 언급하고 있지만, 재귀라는 방식 자체가 시간복잡도를 줄여주는 방식은 아니다. 그러나 메모이제이션이라는 방식을 통해 중간 결과를 저장해두는 방식으로 처리한다면, 계산 횟수를 많이 줄일 수 있다. 또 다른 방법으로는 조건문을 통해서 불필요한 가지를 쳐내는 방식으로도 계산횟수를 줄인다. 이번..
백준에서 코테 문제를 풀다보면 느끼겠지만, 입/출력 쪽에서 시간 초과가 자주 발생한다. (분명 알고리즘은 맞았는데, 계속 시간초과가 나면 대부분 이 문제다..) 각각 어떤 곳에서 문제가 발생하는지 파헤쳐보자. 입력 문제 입력에 문제가 생기는 경우는 대부분 Scanner를 써서 여러번 next()나 nextInt()으로 가져오는 경우다. 입력에 문제가 생겼던 문제는 탑 이었다. 50만번은 딱히 많아보이지 않는 갯수이다. N번 정도는 그냥 하면 되는거 아냐? 라고 생각할 수 있겠지만 next의 코드를 따라가보면 문제가 있다는 걸 알 수 있다. public String next(Pattern pattern) { ensureOpen(); if (pattern == null) throw new NullPointe..
멘토링 준비도 할 겸해서 코딩 테스트 고수 지인 분의 도움을 받아 코딩 테스트 문제를 조금씩 풀고 있다. 솔직히 피곤하고 힘들지만 한달간 꾸준히 푼 결과 solved.ac에서 측정하는 레벨이 꽤나 올랐다. 어떤 카테고리부터 푸는게 좋을지 고민 중이었는데, 스택을 추천 받았다. 그런데, 스택 코딩 테스트 문제는 일반적인 자료구조 사용법과 같이 만만하지 않았다. 브론즈부터 벽을 좀 느꼈달까 문제를 푼 순서는 다음과 같다. 1. 막대기 : https://www.acmicpc.net/problem/17608 2. 괄호 : https://www.acmicpc.net/problem/9012 3. 탑 : https://www.acmicpc.net/problem/2493 4. 스카이라인 쉬운거 : https://www..
역시 내 직무와 핏하진 않지만 재밌어보여서 들으러간 세션 일단 우리서버에도 istio가 있는데 딱히 특별한 동작을 하고 있진 않지만 일단 클러스터로 떠 있으니 istio가 뭔지만 알아도 도움이 될 거 같아서 참석(istio는 kiali라는 거랑 같이 많이 쓴다고 함) 그리고 두번째 세션인 AWS network는 어떤 내용을 할지가 궁금했는데, 생각과는 전혀 달랐던 세션이라 아쉬웠다. 1. 쿠버네티스 클러스터 마이그레이션 작업 후기(feat. istio envoyfilter의 난)구 클러스터 -> 신 클러스터, 최신 메타에 맞춰가기 위함 구 클러스터의 헬름 차트 : 뭘 하고자 하는지 알겠는데, 미묘하게 다르고 최신 메타는 아님 작지만 묵직한 녀석- 아이템 지급 요청 등을 받았을 때 해당 요청을 보낸 주체..
주변에서 이 책을 여러번 추천 받았었다. 원래 읽고 있던 오브젝트는 생각보다 뒤로 갈수록 흥미가 떨어져서 재미가 없었는데, 이 책은 소개에 적힌대로 인프라 설계를 한눈에 볼 수 있도록 도해(그림)로 정리가 잘되어서 이해하기 쉬웠다. 읽다보면 안전 해시 함수나 블룸 필터, 캐시 같은 치트키를 계속 쓰는 것 같다는 느낌을 받지만, 그래도 생각하기 힘든 부분을 매 설계마다 짚어줘서 오.... 하고 넘어갈 내용이 꾸준히 등장해서 흥미로웠다. 그리고 AWS에서 관리해주는 부분들과 고가용성을 보장해주는 것에 대한 의미를 되새겨볼 수 있었다. 뒤로갈수록 재밌는 사례가 많아서 읽는데도 속도가 붙어서 이틀만에 다 읽을 수 있었다. 그리고, 기억력이 나쁜 내가 꼭 기억해둬야할 만한 것들이 있어서 정리해보려고 한다. 파랑색..
갑작스럽게 떨어진 오더(C레벨에서부터 내려온)로 인해 월드 ID를 이용한 인증 시스템 개발 업무가 추가됐다. 왜 이런 오더가 떨어졌냐를 생각하기전에 월드 ID가 뭐인지부터 알아보자. 월드 ID란? World ID는 영지식 증명과 고급 개인 정보 보호 암호화를 통해 사용자가 익명으로 자신의 고유성과 인간성을 증명할 수 있는 디지털 신원 솔루션입니다. World ID는 클라우드 및 온체인 앱 모두에 쉽게 통합할 수 있습니다. 유효한 월드 ID를 가진 사용자는 월드 앱과 같은 월드 ID 호환 지갑을 통해 익명으로 자신이 고유한 인간임을 몇 초 만에 확인할 수 있습니다. https://docs.worldcoin.org/world-id 굳이 인증 과정을 기존 방식이 아닌 다른 컨셉으로 해야하나?란 생각이 들지만 ..
Contents: AWS 환경에서의 보안의 기본인 Credential 과 API Key 관리에 대한 사례를 공유하여 보안성을 고도화 할 수 있는 방안을 공유 내 직무와 엄청 핏하진 않고 일정이 겹쳐서 갈까말까 수십번은 고민했던 밋업 그런데, 마침 팀에서 필요로 하던 주제라 팀장이 등을 밀어줘서 참석하게 됐다. 사용하는 외부 서비스가 늘어나면서 API key와 credential이 계속 늘어나고 있어서 조금씩 문제가 눈에 띄기 시작했다. 대충 정리해도, AWS, elastic cloud, open AI, hyvortalk, sendgrid, froala, twilio 등 프로필 별로도 나뉘다보니 점점 api key와 credential 코드가 쌓이고 있었다. 이 문제에 대한 나름의 해결책을 기대하고 들으러..
- Total
- Today
- Yesterday
- CloudFront
- Kotlin
- java
- AWS EC2
- cache
- 람다
- Spring
- docker
- Log
- S3
- OpenAI
- AOP
- EKS
- lambda
- ChatGPT
- elasticsearch
- Elastic cloud
- openAI API
- 티스토리챌린지
- 스프링부트
- JWT
- 오블완
- springboot
- serverless
- AWS
- terraform
- 후쿠오카
- GIT
- OpenFeign
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |