일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- branch 전략
- 쿠키
- 구현
- 트랜잭샨
- 셀러리
- 누적합
- AWS
- prg 패턴
- BFS
- 이분탐색
- 완전탐색
- gRPC
- 카카오
- 검색어 추천
- docker
- piplining
- 주식
- 디버깅
- 깊게 생각해보기
- 레디스 동시성
- 알람 시스템
- jwt 표준
- 객체지향패러다임
- 백준
- 좋은 코드 나쁜 코드
- 숫자 블록
- JPA
- spring event
- 결제서비스
- Today
- Total
목록분류 전체보기 (167)
코딩관계론
문제 이해하기 판매원 A가 칫솔을 판매하면 판매한 금액의 10프로가 판매원 A의 상관인 B에게 분배되고, B의 상관인 C에게 분배되는 형태의 판매망을 운영하고 있습니다. 이 때 조직 내 누가 얼만큼의 이득을 가져갔는지 알고자하는 문제였습니다. 문제 해결 방법 설명하기 조직 내 누가 얼마만큼의 이득을 가져갔는지를 파악하기 위해서는 각 판매원이 판매한 금액을 추적해야 합니다. 예를 들어, 판매원 A가 100만원짜리 칫솔을 판매하면, A는 100만원의 10%인 10만원을 B에게, B는 10만원의 10%인 1만원을 C에게 주어야 합니다. 따라서 이 판매망에서 각 판매원이 얼마만큼의 이득을 가져가는지를 계산하려면, 각 판매원이 판매한 금액을 추적하고, 이를 기반으로 각 판매원이 상위 조직원에게 주는 이득을 계산하..
문제 이해하기 양의 정수 n을 k진수로 변환한 후, 다음의 네 가지 규칙에 맞는 소수를 찾는 문제입니다. 0P0 형태의 소수: 양쪽에 0이 있는 소수 P0 형태의 소수: 오른쪽에만 0이 있는 소수 0P 형태의 소수: 왼쪽에만 0이 있는 소수 P 형태의 소수: 양쪽에 0이 없는 소수 예를들면 437674이라는 십지수 정수를 3진수로 변환하면 "211020101011"이 됩니다. 이 숫자들 중에 규칙이 적용되는 숫자를 찾으면 2110(P0 조건) 011(0P 조건), 020(0P0 조건)이 있어 답이 3이 됩니다. 문제 해결 방법 설명하기 1. 10진수를 k진수로 변환할 수 있어야합니다. 10진수에서 n을 k 진수로 변환하는 방법은 아래와 같습니다. n을 k로 나눈 몫과 나머지를 구합니다. 해당 나머지를 가..
문제 이해하기 이진트리를 수로 표현하는 문제입니다. 이진트리의 노드를 가장 왼쪽 노드부터 가장 오른쪽 노드까지, 왼쪽에 있는 순서대로 살펴보고, 더미 노드인 경우 문자열 뒤에 0을 추가하고, 더미 노드가 아닌 경우 문자열 뒤에 1을 추가합니다. 마지막으로 문자열에 저장된 이진수를 십진수로 변환합니다. 문제의 예시인 42를 설명해보자면, 42를 이진수로 변환하면 101010이 됩니다. 이는 완전이진포화트리가 아니기에 0101010으로 변환됩니다. 하위 리프노드에 더미노드가 추가 되야 했지만, 카카오 예시에선 생략되어 있는 모습입니다. 문제 해결 방법 설명하기 1. 이진수를 포화 이진트리로 만들 수 있어야 합니다. 주어진 정수를 이진수로 변환하여 포화 이진트리를 만드는 것이 요구되고, 이때 0을 삽입해야 합..
서론로봇이 미션을 수행하고 그 결과를 종합하여 SMS로 사용자들에게 전달해야 하는 업무가 있었습니다. 단순한 전달이 아닌 각 공장 관리자들의 성격과 특성이 다르기 때문에, 해당 공장 담당자의 미션 결과를 다른 공장 담당자가 보는 것에 대한 거부감이 있었고, 이런 문제들 때문에 로봇이 수행한 미션별로 수신자가 달라져야 했습니다. 이 글은 이러한 문제를 해결하기 위한 개발 과정을 자세히 다를 예정이며,이를 위해 요구 사항 분석, 아키텍처 설계, DB 모델링, 알고리즘 구현 등의 작업을 수행한 결과를 공유할 것입니다.요구사항 분석SMS 예약 미션 알고리즘 개발을 위해 먼저 요구사항을 분석하였습니다. 기본적으로 로봇이 수행한 미션 결과들을 종합한 SMS를 사용자가 원하는 시간에 받아보고 싶다는 요구사항이 있었습..
1. 개요문제 해결 방법 소개 해결책으로 BFS 기반의 프로그램을 개발하여, 각 노드에서 적절한 행동을 수행하도록 구현했습니다. 이는 에상치 못한 상황에서도 일관성 있는 동작을 수행하도록 했습니다.문제 해결의 필요성 이전에는 시나리오 기반의 상태 전이 프로그램을 사용했었는데, 이는 외부 간섭이 발생하면 로봇이 미션을 수행하지 못하는 경우가 발생하였습니다. 이러한 문제를 해결하기 위해 문의 상태에 따라 다른 행동을 취하는 프로그램을 개발하게 되었습니다. 이로써 외부 간섭에도 더욱 견고한 시스템을 구현할 수 있게 되었습니다. 2. 문제 정의문제의 내용 및 조건 설명로봇이 ROLL-UP DOOR을 통과하기 위해서는 정해진 waypoint에 도착하면 ROLL-UP DOOR의 상태를 알아내기 위해 아두이노와 통신..
소개 웹 애플리케이션 보안 취약점 중 하나인 CSRF 오류는 인증된 사용자가 의도하지 않은 요청을 악의적인 공격자가 대신 보내는 경우 발생합니다. 이 기술 블로그에서는 CSRF 오류에 대한 개념과 원리, 발생 상황에 대한 예시 등에 대해 다루고, CSRF 오류를 예방하기 위한 방법들을 제시합니다. CSRF 오류의 원인 CSRF 오류가 발생하는 이유 중 하나는 HTTP의 Stateless 특성입니다. HTTP는 클라이언트와 서버 간의 연결을 유지하지 않는 Stateless한 프로토콜이기 때문에, 요청을 보낼 때마다 새로운 연결이 이루어지게 됩니다. 이러한 특성으로 인해, 서버는 요청이 유효한지 검증하기 위해 각 요청에 대한 검증 토큰을 발급합니다. 하지만, 이 토큰이 없는 상황에서 요청을 보내는 공격자가 ..
RDS란 Amazon Relational Database Service (RDS)는 AWS에서 제공하는 관리형 관계형 데이터베이스 서비스입니다. RDS는 다양한 데이터베이스 엔진을 지원하며, MySQL, PostgreSQL, Oracle, SQL Server 및 Amazon Aurora 등을 사용할 수 있습니다. 사용하는 이유 RDS는 데이터베이스 관리 작업을 쉽게 하도록 도와줍니다. 사용자는 데이터베이스 엔진을 설치, 구성, 패치 및 백업할 필요가 없으며, 이를 대신 AWS에서 관리합니다. 이를 통해 시간과 비용을 절약할 수 있습니다. RDS는 스케일링이 가능합니다. 사용자는 데이터베이스 인스턴스의 크기와 용량을 자유롭게 조정할 수 있으며, 필요에 따라 자동 확장이 가능합니다. 이를 통해 데이터베이스 ..
Cross-Zone Load Balancing 목적 Cross-Zone Load Balancing의 목적은 로드 밸런서가 여러 가용 영역에 걸쳐있는 인스턴스에 대한 트래픽을 조절하고 분산시키기 위한 것입니다. 예를 들어, 로드 밸런서와 인스턴스가 서로 다른 가용 영역에 위치한 경우, Cross-Zone Load Balancing을 사용하면 로드 밸런서가 각 가용 영역의 인스턴스에 대한 트래픽을 균등하게 분산시킬 수 있습니다. 이를 통해 애플리케이션의 가용성을 향상시키고 지연 시간을 최소화할 수 있습니다. 아래 이미지를 보시면 Cross-Zone Load Balancing기능이 활성화 되면 가용영역이 달라도 각 인스턴스들에게 트레픽이 분산되고, Cross-Zone Load Balancing이 꺼져있다면 로..
목적 ASG에서는 EC2 인스턴스를 자동으로 관리하고, 해당 인스턴스들이 제공하는 서비스의 수요에 따라 *스케일 인/아웃이 가능합니다. 이를 위해 오토스케일링 알람을 설정할 수 있습니다. 기능 로드 밸런서와 함께 사용하여 트래픽 증가 시 인스턴스를 자동으로 추가하고, 트래픽 감소 시 인스턴스를 자동으로 제거하여 비용을 절감합니다. 오토스케일링 알람을 설정하여 인스턴스 스케일링을 트리거하도록 할 수 있습니다. 오토스케일링 정책을 만들어서 인스턴스 스케일링 동작을 자동화합니다. 정책은 추적, 단순/단계, 예약 기반으로 생성할 수 있습니다. 인스턴스 스케일링 동작은 세트 기반 또는 네트워크 임계값을 기반으로 할 수 있습니다. *스케일링 쿨링 다운 기능을 사용하여 인스턴스를 생성 또는 종료하는 동작을 일시 중지..
목적 로드 밸런서의 세션 지속성(Session Persistence)은 클라이언트가 여러 개의 백엔드 서버에 걸쳐서 작업을 수행할 때, 같은 클라이언트 요청이 항상 같은 백엔드 서버에 전달되도록 하는 기능입니다. 즉, 클라이언트가 한 번 접속한 후에도 계속 같은 서버에 접속하는 것을 보장해줍니다. 동작 방법 로드 밸런서에서 세션 지속성은 쿠키 기반 또는 서버 기반으로 설정할 수 있습니다. 쿠키 기반 세션 지속성은 클라이언트의 브라우저에 쿠키를 저장하고, 이를 이용하여 요청이 처리되는 백엔드 서버를 선택합니다. 서버 기반 세션 지속성은 로드 밸런서가 각 클라이언트의 요청을 특정 백엔드 서버에 할당하도록 지정합니다. 세션 지속성을 사용하면 로드 밸런서가 어떤 인스턴스에 클라이언트 요청을 보낼지 결정할 때, ..
목적 AWS 로드 밸런서는 여러 대의 EC2 인스턴스 또는 IP 주소로 들어오는 트래픽을 자동으로 분산시켜주는 서비스입니다. 이를 통해 시스템의 고가용성과 확장성을 높일 수 있습니다. 2023.03.29 - [AWS] - AWS - 고가용성 확장성 특징 유저는 AWS 로드 밸런서에 연결되며, 로드 밸런서가 적절한 EC2 인스턴스에 트래픽을 분산시켜주므로, 유저는 어떤 인스턴스에 연결되어 있는지를 명확히 알 수 없습니다 기능 Health Check: 로드 밸런서는 Health Check를 통해 각각의 EC2 인스턴스가 올바르게 작동하고 있는지 확인할 수 있습니다. Health Check를 통해 이상 상태의 인스턴스는 자동으로 로드 밸런서의 대상에서 제외됩니다. 이를 통해 시스템의 가용성을 높일 수 있습니다..
고가용성 시스템에 장애가 발생해도 중단되지 않도록 여러 대의 서버를 다중 AZ에 걸쳐 배치하는 것을 말합니다. 이렇게 구성된 시스템은 하나의 AZ에서 장애가 발생해도 다른 AZ에서 서비스를 계속할 수 있으므로, 시스템의 가용성이 높아집니다. 수직 확장성 수직 확장성은 인스턴스의 사양을 높이는 것을 말합니다. 예를 들어, 기존에 사용하던 인스턴스의 사양이 너무 작아져서 부하를 감당하지 못할 때는 사양을 높이는 작업을 수행합니다. 이러한 수직 확장성은 단일 서버 환경에서 적용됩니다. 수평 확장성 수평 확장성은 인스턴스의 수를 늘리는 것을 말합니다. 예를 들어, 웹 서버의 부하를 분산시키기 위해 여러 대의 인스턴스를 사용하는 것입니다. 이러한 수평 확장성은 분산 시스템에서 적용됩니다. 로드 밸런서는 이러한 수..