목록전체 글 (75)
Arthur's Blog
📌 정의 멀티 스레드 환경에서 여러 스레드가 동시에 하나의 자원을 공유할 때 동시성 문제, 데드락 등 여러 문제가 발생한다. 해당 문제 중 동시성 문제를 제어하는 방법을 알아보자. 1️⃣ 암시적 잠금 하나의 스레드가 해당 메소드를 실행하고 있을 때 다른 스레드가 해당 메소드를 실행하지 못하고 대기하게 하는 방법. 잠금은 메소드, 변수에 각 각 걸 수 있다. 😎 예제 class Count { private int count; public synchronized int view() { return count++; } } 위의 예제는 메소드 잠금이다. class Count { private Integer count; public int view() { synchronized (this.count) { retu..
📌 정의 1️⃣ 높은 응집도 응집도가 높다는 것은 변화가 일어날 때 해당 모듈에서 변하는 부분이 크다는 것이다. 간단하게, 기능을 변경할 때 여러 모듈에서 변경하는 것이아닌 하나의 모듈만 변경하면 되는 것이다. 2️⃣ 낮은 결합도 책임과 관심사가 다른 오브젝트 또는 모듈과는 낮은 결합도, 즉 느슨하게 연결된 형태를 유지하는 것이 바람직한 것. 결합도가 낮아지면 확장에도 용이해진다.
하나의 VPC는 여러 개의 보안 그룹을 가질 수 있으며, 여러개의 서브넷을 가질 수 있다. 서브넷은 하나의 Region에 여러 개 존재할 수 있다. 기본적으로는 각 AZ(가용영역)별로 존재한다. 서브넷은 라우트 테이블을 가지고 있다. 기본적으로 제공하는 VPC의 라우트 테이블은 0.0.0.0/0, 즉 모든 IPv4를 허용하므로 해킹에 취약할 수 밖에 없다. 따라서 보안을 신경쓴다면 Default VPC보다는 Custom VPC가 낫다고 생각한다. 물론 대략적인 지식이 있다는 가정하에. 필자는 Route Table에서 IGW 전체를대상으로 라우팅을 해준다면(모든 IPv4 허용), SG(Security Group)에서라도 방어해야한다고 생각한다. 아래는 OPGG 해커톤에서 구축한 AWS의 구조이다. 외부의 ..
📌 정의 로그 데이터 분석 도구이다. E = Elastic Search, 분석 및 저장 L = Logstash, 로그 수집 K = Kibana, 시각화 도구 🧪 ElasticSearch Logstash를 통해 수신된 데이터를 저장소에 저장하는 역할. 분산 검색엔진. 🎞 Logstash 수집할 로그를 선정해서, 지정된 서버에 인덱싱하여 전송하는 역할. ✨ Kibana 데이터를 시각적으로 탐색, 실시간으로 분석하는 역할 🔗 ELK Stack 위의 ELK에 Beats가 추가된 것. 🧶 Beats 에이전트로 설치하여 다양한 유형의 데이터를 ElasticSearch 또는 Logstash에 전송하는 데이터 발송자.
🎊 시작하기 전에.. 이 글을 읽기 전에 Docker의 기본적인 작동원리, Docker Network에 대한 지식이 있어야합니다. 또한 Docker가 Server에 install되어있어야합니다. 1️⃣ 가장 먼저 https://github.com/EntryDSM/BELK 위의 링크를 server에 clone 받습니다. git clone https://github.com/EntryDSM/BELK 2️⃣ 두 번째로 해당 디렉토리 내부로 들어가서 docker-compose.yml 파일을 엽니다. ELASTIC_PASSWORD:를 설정해줍니다. 기본값은 changeme 입니다. yml 파일 내부의 filebeat설정에서 두 번째 volume설정에서 source는 host에서 로그의 위치, target는 cont..
📌 정의 Advice의 한 종류로 핵심 관심사의 실패여부와 상관없이 전 후로 실행되도록 하는 Advice이다. Advice는 실질적으로 어떤 일을 해야할지에 대한 것, 즉 실질적인 부가기능을 담은 구현체이다. 😉 사용법 Pointcut를 전달해주어야 한다. Pointcut는 횡단관심사(부가기능)이 적용될 joinPoint들을 정의한 것이다. 1️⃣ execution @Pointcut(“execution(접근제어자, 반환형 패키지포함 클래스 경로 메소드 파라미터)”) execution(* *(..))메소드의 파라미터가 개수 상관 X 접근제어자, 반환형 모두 상관 X, 어떠한 경로에 존재하는 클래스도 상관하지 않고 적용. execution(* test.spring..*(..)) 접근제어자, 반환형 모두 상관..
😁 공통점 Bean을 생성하는 어노테이션. 😵 차이점 @Bean 어노테이션의 docs를 가보면 ElementType.METHOD, ElementType.ANNOTATION_TYPE가 되어있고, @Component 어노테이션의 docs를 가보면 ElementType.TYPE으로 되어있다. 따라서 개발자가 직접 수정이 가능한 클래스에는 @Component를 사용하고, 라이브러리를 사용할 경우에는 해당 인스턴스를 생성하는 메소드 위에 @Bean을 사용한다. 간단하게 @Bean 어노테이션은 method 위에 붙일 수 있고, @Component 어노테이션은 class위에 붙일 수 있다.
📌 정의 서비스 개발 중 지속적으로 개선을 시도할 수 있도록 스프린트(Sprint)라는 짧은 개발 사이클을 활용하는 프로젝트 관리 방법론. 🏃♀️ 스프린트 스크럼 패턴을 따르는 일정한 기간(2주 ~ 30일) 스프린트 중에 모든 개발 작업은 스프린트 백로그에 있는 아이템만을 구축하는데 집중한다. 👷♀️ 역할 1. 제품 책임자 무엇을 할 건지, 왜 하는지에 대해 결정하는 결정권자. 제품 백로그(product backlog)를 관리. 사용자가 필요로 하는 내용을 반영하고, 백로그 아이템을 추가, 제거, 우선순위 재조정 등 제품 백로그를 지속적으로 관리하면서 프로젝트가 제대로 진행되도록 만들어간다. 2. 스크럼 마스터 스크럼을 잘 수행할 수 있도록 객관적인 시각에서 조언을 해주는 가이드 역할을 수행. 제품 ..