그냥 해보는 생각 Wordle 서비스를 한국 현지화한다면 어떤걸 고려해야할까? 같은 로직이 한국어에도 적합할까? 영어는 단순히 알파벳이라는 자음\모음이 통합되어있는 놈이 존재 한국어는 자음모음이 따로임. 어떻게 맞았다/틀렸다/다른위치다를 표현해줄까? 자모를 분해 정답을 알려준다면, 그게 난이도가 적절할까? 다양한 조합이 될 수 있는 한국어로는 난이도가 너무 어렵지 않을까? 자모를 분리해 정답 또는 다른위치에 있다 여부를 어떻게 표현할까? 네모 아이덴티티를 사용해 자신이 맞춰온 히스토리를 표현. 손쉽게 공유. 일한 텍스트 기반의 공유법이 우리 나라에서도 인기가 있을까? 외국에서는 텍스트 기반의 커뮤니티인 트위터가 존재. 대다수의 사람들이 활용. 트위터를 통해 쉽게 자신의 히스토리를 공유할 수 있음 > 공유..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bmgamg/btrsiHk8IZ0/aKJWLDOBX2MDD3P4d7WrC1/img.png)
정의 처리율 제한 장치 (Rate Limiter) 클라이언트 또는 서비스가 보내는 트리팩의 처리율을 제어하기 위한 장치 정의된 임계치(Threshold)를 넘어서면 추가로 도달한 모든 호출은 처리가 중단 Ex) 사용자는 초당 2회 이상의 새 글을 올릴 수 없다. 같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다. 처리율 제한 장치는 왜 사용하는가? DoS(Denial of Service) 공격에 의한 자원 고갈(Resource Starvation)을 방지할 수 있다. 비용을 절감할 수 있다. 처리를 제한해 서버를 많이 두지 않고, 우선순위가 높은 API에 더 많은 자원을 할당할 수 있다. 특히 요청 당 비용이 드는 Third party API를 사용하고 있는 경우, 횟수 제한을 통해 과도한..
Sealed-secrets는 gitops를 사용한다면 보안적으로 필수적?이라고 생각하는 요소다. Private repo여도 비밀번호 같은 정보가 base64로 아무나 디코딩 가능한 형태의 Secret manifest 형태로 올라간다면 보안적으로 불완전한 요소일 수 있다. 여기서 Sealed-secrets을 사용하면 더 안전히 gitops 형태로 이끌어 갈 수 있다고 생각한다. - 관련되어 개념을 모른다면 커피고래님의 블로그 관련 글이 설명이 잘 되어있다. 배포하기 이전에 로컬에서 테스트를 자주 해야하는 상황이 오는데, 맨날 하는 것이 아니다보니 할 때마다 사소한 오류들이 생겨서 그냥 정리해둔다. 준비사항 # repo 추가 helm install sealed-secrets sealed-secrets/sea..
시스템 설계 면접 기술적 측면 이상으로 지원자가 협렵에 적합한 사람인지, 압박이 심한 상황도 잘 헤쳐나가는지, 좋은 질문을 던질 능력이 있는지 부정적인 것 설계의 순수성에 집착한 나머지 타협적 결정을 도외시하고 오버 엔지니어링을 하는 엔지니어링들이 협업에도 많다. 오버 엔지니어링의 결과로 시스템 전반의 비용이 올라간다. 상당수 회사들은 값비싼 대가를 치르고 있다. 효과적 면접을 위한 4단계 접근법 1단계: 문제 이해 및 설계 범위 확정 바로 답부터 들이밀지 말자. 속도를 늦추자. 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 하자. 가장 중요한 기술 중 하나는 올바른 질문을 하는 것. 적절한 가정을 하는 것. 그리고 시스템 구축에 필요한 정보를 모으는 것. 이 단계에서는 요구사항을 이해하고 모호함을 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/qUbKQ/btrq8JMMoBu/8swtvKgZrkOjAksiwFqDkk/img.png)
책 [가상 면접 사례로 배우는 대규모 시스템 설계 기초]에 대해 요약한 글입니다. 단일서버 웹 - 앱 - 데이터베이스 - 캐시 등이 한 서버에서 동작 데이터베이스 웹/모바일 트래픽 처리용도의 서버(웹 계층)와 데이터베이스용 서버(데이터 계층)를 분리 독립적 확장 추구 비-관계형(NoSQL) 데이터베이스가 좋은 선택일 수 있는 경우 아주 낮은 응답 지연시간 필요 다루는 데이터가 비정형 데이터인 경우 데이터를 직렬화/역직렬화 할 수만 있으면 되는 경우 아주 많은 양의 데이터를 저장할 필요가 있는 경우 수직적 규모 확장 / 수평적 규모 확장 스케일 업 / 스케일 아웃 수직적 규모 확장(스케일 업)은 장애에 대한 자동복구 방안이나 다중화 방안을 제시하지 않음. 즉, 장애 발생 시 서비스 중단. 로드 밸런서 부하..
Spring boot 웹 서버를 개발하고 Kubernetes에 배포할 때, Profile(local, dev, prd, ...)을 설정하는 법을 알아보자. Dockerfile을 사용해 컨테이너 이미지 빌드 Dockerfile을 통해 이미지 빌드 시, ENTRYPOINT에서 Jar 파일을 실행하며 Dspring.profiles.active 옵션을 통해 설정할 수 있다. ... ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "some.jar"] 해당 컨테이너 이미지를 실행시키면, dev profile로 설정되어 Spring boot 웹 서버가 실행된다. Buildpacks(ex. gradle bootBuildImage)를 통해 컨테이너 이미지 빌드..
클린 아키텍처, 마이크로 서비스 패턴 책을 읽으면서 Command, Query Class들이 나왔는데, 무슨 차이며 어떤 역할이길래 이런 이름(Suffix)으로 네이밍했을까 궁금했다. 근데 책에서 나와있길래 짧게 적어본다. - Command (커맨드, 명령): 데이터 생성/수정/삭제(CUD) 시에 사용 - Query (쿼리, 조회): 데이터 읽기(R) 시에 사용 개발 상에서 많이 사용되던 단어다보니 의미를 생각하지 않아서 이해가 잘 안되던 것이었는데, 단어의 본래 의미와 한국어 해석을 보면 이해가 간다. 결국, 데이터를 생성/수정/삭제하는 CUD 작업과 관련이 되어있다면 Command Suffix가 붙은 네이밍을 사용하고, 데이터를 조회하는 R 작업과 관련이 되어 있다면 Query Suffix가 붙은 네..
- Total
- Today
- Yesterday
- c++
- 일상
- k8s
- container
- Algorithm
- HTTP
- Spring boot
- docker
- 쿠버네티스
- Intellij
- python
- boj
- 백준
- java
- 알고리즘
- Spring
- gradle
- WebFlux
- MySQL
- Istio
- jasync
- tag
- 비동기
- 하루
- Log
- 로그
- Kubernetes
- Clean Architecture
- OpenTelemetry
- 클린 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |