본문 바로가기

전체글10

@Configuration과 proxyBeanMethods 자바 코드로 빈 등록하기 스프링 @Configuration 클래스의 @Bean 메서드를 활용하여 자바코드로 빈 등록을 할 수 있다. 아래 학습 테스트 코드를 살펴보자 class ConfigurationTest { @Test void configuration() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(); ac.register(MyConfig.class); ac.refresh(); BeanA bean1 = ac.getBean(Bean1.class); BeanB bean2 = ac.getBean(Bean2.class); Assertions.assertThat(bean1.item).isSameAs(bean.. 2024. 2. 20.
스레드 풀(Thread pool) 제대로 이해하기 Thread per request model 백엔드 API 서버에서 요청을 처리하는 여러가지 방식이 있는데 그 중 하나가 Thread per request model 이다. Thread per request model 에서는 하나의 API Request 는 하나의 Thread가 처리하게 되는 구조다. 만약 Thread per request 모델의 동작 방식이 서버에서 들어오는 요청마다 스레드를 새로 만들어서 처리하고 처리가 끝난 스레드는 버리는 식으로 동작한다면 어떤 문제점이 있을까? 우선 스레드 생성/수거 작업은 OS의 kernel 레벨에서 이루어지는 꽤나 비싼 작업이다. 따라서 요청이 올때마다 스레드를 생성하게 되면 스레드 생성에 소요되는 시간 때문에 요청 처리가 더 오래 걸릴 것이다. 또한 요청마다.. 2023. 9. 10.
Set과 Hash Table Set은 중복된 원소를 포함하지 않고 순서가 상관없는 원소들의 컬렉션을 나타내는 개념으로 집합의 개념과 같다.(집합 역시 {1, 9, 6, 4}처럼 중복과 순서가 없다.) Set은 여러 가지 방법으로 구현될 수 있지만, 가장 일반적으로 사용되는 구현 방법은 해시 테이블(Hash Table)을 기반으로 한다. 해시 테이블에서는 Key가 중복될 수 없고 데이터는 순차적이 아니라 랜덤하게 저장한다. 해시 테이블의 이런 특징은 Set의 개념과 일치하기 때문에 Set을 구현할 때는 해시 테이블의 Key에 데이터를 저장하는 형태로 구현을 하게 된다. Hash Table 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조다. 해시 테이블이 빠른 검색속.. 2023. 9. 6.
List와 Set의 차이 List와 Set은 실무에서 자주 쓰는 개념이다. 두 타입의 차이를 잘 알고 있다면 기본기도 탄탄하게 하고 상황에 따라 List를 쓰는게 더 유리한지 Set을 쓰는게 더 유리한지 판단하는데 도움이 될 것이다. 개념적인 차이 List 같은 종류의 아이템을 저장 순서를 보장 중복을 허용 Set 같은 종류의 아이템을 저장 순서를 보장하지 않음 중복을 허용하지 않음 개념적인 차이를 필자가 좋아하는 야구를 주제로 간단한 예시를 들어 설명해보면 올해 한국 프로야구에서 한번이라도 홈런을 친 선수(모든 선수의 이름은 다 다르다고 가정)를 저장하려면 List와 Set 중에서 어떤 타입을 쓰는게 좋을까? 예시를 잘 살펴보면 모든 선수들의 이름은 다 다르다고 가정했으니 홈런을 친 선수들을 저장할때 중복을 허용할 필요가 없어.. 2023. 9. 2.
Amazon Linux 서버에 SonarQube 설치하기 정적 코드 분석 정적 코드 분석은 코드내에서 발견할 수 있는 코드 스멜, 잠재적인 결함, 컨벤션 체크, 보안 취약점 등을 코드 레벨에서 분석해서 레포팅 해준다. 컨벤션 교정 수준이 아니라, 잠재적 문제가 될만한 코드, 안티패턴의 코드들을 다 시스템이 찾아주고 수정안을 제안하기 때문에 코드리뷰에 들어가는 비용도 줄일 수 있다. 이런 정적 코드 분석 도구에는 대표적으로 pmd, SonarQube, cppcheck, checkstyle 등 여러가지가 있지만, 가장 많은 사용자들이 사용하는 도구는 SonarQube(소나큐브) 이다. 이 글에서는 AWS EC2 인스턴스에 SonarQube 서버를 설치하는 방법을 설명하려고 한다. AMI(Amazon Machine Image)는 Amazon Linux 2로 진행한다.. 2022. 12. 11.
AWS EC2 인스턴스 생성하기 EC2(Elastic Compute Cloud) AWS에서 무료료 제공하는 프리티어 플랜에서는 EC2사용에 다음과 같은 제한이 있다. 사양이 t2.micro만 가능 vCPI(가상 CPU) 1 Core, 메모리 1GB 보통 vCPU는 물리 CPU사양의 절반 정도의 성능을 가짐 월 750시간의 제한이 있으며 초과하면 비용이 부과됨 24시간 * 31일 = 744시간 즉, 1대의 t2.micro만 사용한다면 24시간 켜놔도 요금이 부과되지 않음 리전(Region) 리전이란 AWS의 서비스가 구동될 지역을 이야기한다. AWS는 도시별로 클라우드 센터를 지어 해당 센터에서 구축된 가상머신들을 사용할 수 있다. 국내에서 서비스한다면 서울 리전을 선택해야 네트워크가 가장 빠르다. 인스턴스 시작 AMI(Amazon Ma.. 2022. 12. 7.
반응형