본문 바로가기

프로그래밍30

[Java]헥사고날 아키텍처 이번 프로젝트에서 헥사고날 아키텍처를 적용한다고 해서 블로그에 정리했습니다.1. 헥사고날 아키텍처 개요 헥사고날 아키텍처(또는 포트와 어댑터 아키텍처)는 소프트웨어 시스템을 외부 시스템과 격리하여 비즈니스 로직을 중심으로 개발하도록 돕는 아키텍처 패턴입니다.이 아키텍처는 외부 의존성을 관리하고 시스템을 더 쉽게 확장하고 테스트할 수 있도록 합니다.핵심 아이디어는 애플리케이션의 내부와 외부 시스템 간의 상호작용을 포트(Ports) 와 어댑터(Adapters) 라는 추상화로 나누어 설계하는 것입니다. 외부 시스템은 어댑터를 통해 시스템과 상호작용하며, 포트는 애플리케이션 내부의 핵심 도메인 로직과 외부 시스템 간의 인터페이스 역할을 합니다.2. 헥사고날 아키텍처의 구성 요소핵심 도메인(Core Domain).. 2025. 2. 5.
에라토스테네스_체 고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법. 이 방법은 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라고 부른다. 따지고 보면 f(x)=x1P(x)f(x)=1P​(x)x​[1]의 수열을 표로 시각화한 것이라고 볼 수 있다. 1. solution(int n) - 에라토스테네스의 체public int solution(int n) { int answer = 0; int[] ch = new int[n+1]; for(int i=2; i 최종 복잡도O(nlog⁡log⁡n)에라토스테네스의 체의 특성상 매우 효율적임.2. solution2(int n) - 단순 소수 판별 구현시간 복잡도 분석외부 for 루프: O(n)2부터 n까지 모든 수를 순회내부 for 루프: O.. 2025. 2. 1.
트래픽이 증가할 때 고려해야 할 사항 1. 오토스케일링 (Auto Scaling)목적: 트래픽 증가 시 자동으로 서버 인스턴스를 추가하고, 트래픽 감소 시 자동으로 인스턴스를 줄여 비용을 절감합니다.방법:클라우드 서비스 사용: AWS Auto Scaling, Google Cloud Autoscaler, Azure Virtual Machine Scale Sets 등을 설정합니다.트리거 설정: CPU 사용량, 메모리 사용량, 네트워크 트래픽 등의 지표를 기반으로 인스턴스를 자동으로 조정합니다.  2. 콘텐츠 전송 네트워크 (CDN)목적: 전 세계에 분산된 서버 네트워크를 통해 정적 콘텐츠를 캐싱하고 제공하여 원래 서버의 부하를 줄입니다.방법:CDN 서비스 사용: Cloudflare, AWS CloudFront, Akamai, Fastly 등의 .. 2024. 5. 25.
자바 synchronized synchronized? 자바에서 멀티쓰레드를 사용할 경우 무조건 한번쯤은 보게된다. 공유될 가능성이 존재하는 자원에 대해 동기화를 제어할 수 있게 해주는 키워드 입니다. 스레드가 해당 자원에 접근중이고 다른 스레드가 같은 자원에 접근 하려고 하는 경우 접근을 대기시키는 기능을 지원함 코드 예시 메서드에 synchrozied 사용한 경우 해당 메서드는 동시에 오직 하나의 스레드만 실행할 수 있습니다. public synchrozied void incrementCount() { this.count++; } 코드 블록에 synchrozied 사용한 경우 다음과 같이 this(인스턴스 자신을 참조하는) 객체나 특정 객체에 대한 블록에 synchronized 키워드를 붙이면, 해당 객체에 대한 모든 스레드의 접.. 2024. 3. 29.