본문 바로가기

전체 글

(461)
elasticsearch - CRUD 가장 기본이 되는 데이터 저장을 알아보겠습니다. 기존 RDB와는 용어도 약간씩 다르고, 삽입하는 방법도 약간 다르지만 쉽게 따라할 수 있도록 되어있습니다. http:// IP : port / Index / Type / id값 ex) http://localhost:9200/test/dog/1 classes index 조회 classes index가 존재하는지 아래의 커맨드를 이용하여 확인해 보자. curl -XGET http://localhost:9200/classes?pretty status 404: index를 만들어 준 적이 없기 때문에 찾을 수 없다고 나타남. classes index 생성 이번에는 classes index를 생성해보고 잘 만들어졌는지 확인까지 해보도록 하자. curl -XPUT h..
elastic search 검색엔진의 시초, Lucene 모든 검색엔진의 시초는 루씬(Lucene). 더그 커팅이 고안한 역색인(Inverted Index) 구조인 아파치 루씬을 기반으로 분산처리를 가능하게 한 아파치 솔라(Solr)가 등장해서 검색엔진 시장을 장악했고, 몇 년 후에 역시 루씬을 기반으로 한 Elastic Search가 등장해 지금은 검색엔진 분야에서 지배적인 위치에 있다. 서치엔진 순위 트렌드. 2016년 무렵부터 ES가 가장 많이 사용되고 있다.(https://db-engines.com/en/ranking_trend/search+engine) ES와 RDBMS 조금 더 쉬운 개념 파악을 위해서 ES에서 사용되는 데이터 구조를 RDBMS에 대응해보면 다음과 같이 맵핑된다. 데이터 구조 Elastic Search는..
Map, Hash table Hash table (Hash map) 배열과 해시 함수 (Hash function)를 사용하여 map을 구현한 자료구조입니다. 일반적으로 상수 시간으로 데이터에 접근하기 때문에 조회가 빠르다는 장점을 가지고 있습니다. Hash function 임의의 크기를 가지는 type의 데이터를 고정된 크기를 가지는 type의 데이터로 변환하는 함수입니다. 아래의 그림을 참고 부탁드립니다. Hash table은 어떻게 동작할까요? hash collision key는 다른데 hash가 같을때 ket도 hash도 다른데 hash % map_capacity 결과가 같을 때 hash collision 해결 방법 - open addressing (linear probing) -> 비어있는 공간에 저장 -> - separat..
Forward proxy, Reverse proxy, Load Balancing 프록시 (Proxy) 너무 어려운 개념인 프록시를 축약하고 쉽게 설명하면, 남을 대신하여 일을 처리해주는 것, 즉 "대리" 라는 단어로 축약해서 설명할 수 있습니다. 프록시 종류는 너무 다양합니다. 1. Spring proxy 2. Proxy pattern 3. Network proxy 이중에서 오늘 알아볼 부분은 Network proxy에 대한 내용입니다. 프록시 서버 앞에서 프록시는 대리라는 단어로 설명을 하였습니다. 그렇다면, 프록시 서버는 대신 처리하는 서버라고 할 수 있겠네요. 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버 캐시/보안/트래픽 분산 등 여러 장점을 가질 수 있습니다. 프록시 서버의 구조는 아래와 같습니다. 클라이언트와 서버 사이에 존재하는 구조입니다. 프록시 서버의..
다대다 연관관계 오늘은 다대다 연관관계를 살펴보겠습니다. Member는 Product 리스트를 들고있고 Product도 Member 리스트를 가지고 있는 아래와 같은 상황입니다. 객체는 위와 같이 서로가 서로의 리스트를 가지고 있을 수 있지만 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. 진짜 이 말이 맞는지 코드를 작성하고 확인해 보도록 하겠습니다. Member entity를 작성합니다. @Entity public class Member { @Id @GeneratedValue private Long id; private String username; @ManyToMany @JoinTable(name = "MEMBER_PRODUCT") private List products = new Ar..
mac Jmeter 설치 성능테스트를 하기 위해 사용하는 프로그램으로 jmeter가 흔히들 사용되는데 맥에서는 어떻게 설치 되는지 한 번 살펴보자 자바 설치 후 brew로 jmeter설치 맥에선 brew로 간단하게 jmeter 설치가 가능한데 그 방법은 터미널을 열고brew install jmeter 를 입력하면 바로 설치가 끝난다. jmeter 실행 터미널에서open /usr/local/bin/jmeter 를 입력하면 화면이 뜨면서 요렇게 실행되는 것을 확인 할 수 있을 것이다.
Lambda 코드 수정하기 (github actions) 웹 콘솔에서 수정하기 Lambda 코드를 수정하고 Deploy를 눌러서 바꿔주는 방법을 배웠었습니다. .github/workflows/main.yaml name: deploy to lambda on: [push] jobs: deploy_source: name: deploy lambda from source runs-on: ubuntu-latest steps: - name: checkout source code uses: actions/checkout@v1 - name: default deploy uses: appleboy/lambda-action@master with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: $..
API gateway http endpoint를 만들어 주는 것입니다. Lambda는 endpoint가 없었기 때문에 API gateway를 이용하여 endpoint를 지원해주었습니다. API gateway를 조금 더 자세히 알아보기 위해 API gateway를 직접 생성해 Lambda와 연결해보겠습니다. API gateway에 들어가면 이전시간에 Lambda와 연결한 API gateway를 확인할 수 있습니다. 실습을 위해 지우고 다시 시작해보겠습니다. Lambda에서 API gateway를 생성할 때는 두가지 만 존재했는데 API gateway 페이지에서는 4가지의 API gateway가 존재합니다. 그중에서 우리는 REST API를 생성해 보도록 하겠습니다. Public REST API 구축 버튼 클릭! API 이름을 ..