본문 바로가기

플젝 구현내용 정리

(17)
웹 방화벽(WAF)과 일반 방화벽(FireWall) 그리고 인프라 보안 예전 기술지원 TF에서 WAF생성 및 설정과 방화벽 설정에 대해 정리 TF 프로젝트를 수행하면서, 웹 애플리케이션의 보안을 강화하기 위해 웹 방화벽(WAF)과 일반 방화벽을 생성 및 설정했다. 먼저, AWS CloudFront를 통해 접근하는 사용자를 필터링하기 위해 AWS WAF를 설정했다. AWS Management Console에 로그인한 후, AWS WAF & Shield 서비스로 이동하여 새로운 웹 ACL(Web Access Control List)을 생성 후 적용했다. 이 ACL에는 SQL 인젝션과 XSS(크로스 사이트 스크립팅) 공격을 탐지하고 차단하는 규칙을 추가했다.(그외에 기본적으로 차단해야 하는 공격에 대한 정책도 추후에 추가 했다.) 그런 다음, 생성된 웹 ACL을 AWS Cloud..
NLB(L4)와 ALB(L7) 로드밸런서로 서비스 구현 최근 SI 프로젝트에서 L4와 L7 로드밸런서를 기반으로 프로젝트를 수행한 경험을 기록으로 남겨놓으려 한다.프로젝트 개요이번 프로젝트에서 주요 과제로는 국내 공기업과의 협업을 통해 TCP/IP 연결을 설정 및 관리하고, 애플리케이션 트래픽을 효율적으로 분산하는 것이 목표였다. 이를 위해 L4 로드밸런서와 L7 로드밸런서를 활용했다.L4 로드밸런서먼저, L4 로드밸런서를 설정하여 국내 공기업과의 TCP/IP 연결을 설정 및 관리했다. L4 로드밸런서는 네트워크 계층에서 작동하며, IP 주소와 포트 번호를 기반으로 트래픽을 분산한다. 그리고 고정 IP 할당이 가능해 기관이 요구한 1:1 연결이 가능했다. 이를 통해 빠른 속도와 낮은 지연 시간 그리고 요구사항을 모두 충족 및 유지하면서도 세션 지속성을 보장할..
웹으로 접근하는 사용자 비밀번호를 저장하는 방법 및 비밀번호 관리 방법 SI 프로젝트에서 고객사에서 요구하는 조건은 제 각각 이지만 AWS 기반의 프로젝트 에서는 보통 SecretManager 와 KMS(KeyManagementService)를 활용하여 id나 password와 같은 비밀정보를 저장하고 DB에 패스워드등을 저장할때는 KMS를 활용하여 컬럼 암호화를 진행 후 DB에 저장하는게 대부분이다. 이번 프로젝트도 SecretManager와 KMS를 활용하여 민감정보와 개인정보를 저장하고 관리 하였다. 관련 내용은 아래와 같다. AWS 시크릿 매니저와 KMS를 사용하여 애플리케이션의 비밀정보와 민감정보를 관리한 방법을 설명.비밀번호 관리 (AWS 시크릿 매니저)애플리케이션을 개발하면서 비밀번호와 같은 비밀정보를 안전하게 관리하는 것이 중요하다. 이전 프로젝트 에서는 이를..
사이드카 패턴을 적용한 Service Mesh (Envoy Proxy) 적용기 적용 배경:SI 프로젝트를 수행 중, 마이크로서비스 아키텍처를 활용한 Envoy Proxy 적용하기.각 서비스는 독립적으로 배포되고, 서로 통신해야 및 서비스 간의 통신을 효율적으로 관리하고, 보안 및 모니터링을 강화하기 위해서 보통은 Service Mesh AWS에서는 App Mesh를 적용한다. 사이드카 패턴 도입:서비스 메시를 구현하기 위해 사이드카 패턴을 사용했다. 각 마이크로서비스 인스턴스 옆에 Datadog Agent 컨테이너를 배치하여, 이 에이전트가 서비스 간의 통신 로그를 수집하고 Datadog 서버로 전송하도록 구현하였다. 로그 수집 및 중앙 관리:Datadog Agent 설정: 각 Datadog Agent 컨테이너는 서비스 간의 모든 트래픽을 가로채고, 이를 로깅하도록 설정.에이전트는..
그라파나(Grafana), 프로메테우스(Prometheus), MongoDB 예전에 PoC(Proof of Concept)로 그라파나와 프로메테우스 그리고 몽고DB를 연계하여 모니터링 서비스를 구축한 적이 있다.관련 내용을 정리해 보고자 한다. RDBMS와 NoSQL 데이터베이스는 각각의 특성과 장단점이 있어, 프로젝트의 요구사항에 따라 적절한 선택이 필요하다.RDBMS는 관계형 데이터베이스 관리 시스템으로, 데이터를 테이블 형태로 저장한다. 각 테이블은 고유한 스키마를 가지며, 데이터는 행과 열로 구성된다. RDBMS의 주요 장점은 데이터 무결성과 일관성을 보장하는 강력한 트랜잭션 관리 기능이다. 또한, SQL이라는 표준화된 쿼리 언어를 사용하여 비교적 데이터를 쉽게 조회하고 조작할 수 있다. 그러나 RDBMS는 스키마가 고정되어 있어 데이터 구조가 자주 변경되는 경우 유연성이..
DBMS 인덱스 적용 사례 RDBMS 인덱스 적용 사례 (PostgreSQL)상황: 항공 운항정보를 저장한 테이블로 수십억 건의 데이터가 존재. 주로 항공편 번호와 출발 시간, 도착시간 기준으로 검색이 많이 이루어진다. 적용 방법:인덱스 생성: 항공편 번호와 출발 시간에 인덱스를 생성하여 검색 속도를 높인다.인덱스 유형 선택: 기본적으로 B-tree 인덱스를 사용했다. (대부분의 DB의 경우 B-tree 인덱스가 기본값으로 설정되어 있다.)인덱스 생성 코드:-- 항공편 번호에 인덱스 생성CREATE INDEX idx_flight_number ON flight_info(flight_number);-- 출발 시간에 인덱스 생성CREATE INDEX idx_departure_time ON flight_info(departure_time..
데드락(Dead Lock)과 레이스컨디션(Race Condition)을 해결한 사례 SI 프로젝트 수행 중 TCP/IP 소켓 통신을 구현하다가 데드락(Dead Lock)과 레이스 컨디션(Race Condition)이 발생했었다. 관련 내용을 아래에 정리해 보자. TCP/IP 소켓 연결에서 데드락과 레이스 컨디션 문제를 해결하기 위해서는 프로세스와 스레드의 동작 방식을 이해하고 적절한 동기화 메커니즘을 사용하는 것이 중요하다. 먼저, 데드락(교착 상태)은 두 개 이상의 프로세스나 스레드가 서로의 자원을 기다리며 무한히 대기하는 상황을 말한다.  이를 해결하기 위해서는 자원 할당 순서를 정하고, 자원을 요청할 때 타임아웃을 설정하여 일정 시간 내에 자원을 얻지 못하면 요청을 취소하고 나중에 다시 시도하는 방법을 사용할 수 있다.  레이스 컨디션은 두 개 이상의 스레드가 공유 자원에 동시에 ..
RAID 구현 연구 사례 (AWS EC2, RAID 1+0) 사례: EC2 인스턴스에서 RAID 구성예전에 TF에서 AWS EC2 인스턴스를 사용하여 고가용성과 성능을 높이기 위해 RAID 구성에 대한 POC를 한적이 있다. 프로젝트의 요구사항은 데이터의 신뢰성과 빠른 읽기/쓰기 속도를 보장하는 것이었다.RAID 구성 과정요구사항 분석: 프로젝트의 요구사항을 분석한 결과, 데이터의 신뢰성을 높이기 위해 RAID 1(미러링)과 성능을 높이기 위해 RAID 0(스트라이핑)을 결합한 RAID 10 구성이 적합하다고 판단했다.EC2 인스턴스 선택: RAID 구성을 위해 충분한 I/O 성능을 제공하는 EC2 인스턴스를 선택했다. m5.large 인스턴스를 사용하기로 결정했는데 가성비 및 성능을 고려한 결과 해당 인스턴스가 가장 적합하다고 판단 하였다.EBS 볼륨 생성: R..