일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스프링
- framework
- Baekjoon
- 그리디
- 코딩테스트
- 자바
- 클린코드
- 엘라스틱서치
- 백준
- 데이터베이스
- 개발
- 그리디알고리즘
- ES
- database
- 알고리즘
- 애자일기법
- 애자일프로그래밍
- JPA
- 애자일
- 읽기쉬운코드
- Elasticsearch
- spring boot
- 코드
- API
- Java
- 개발자
- 코딩
- cleancode
- 프레임워크
- Spring
- Today
- Total
목록전체 글 (173)
튼튼발자 개발 성장기🏋️
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bsVloN/btsBiXsOSmF/kZskX3ZxCL1hjss1e1ewM1/img.png)
키바나는 엘라스틱에서 제공하는 데이터 시각화 프로그램이다. 키바나를 이용하면 엘라스틱에 갯인된 데이터를 검색하거나 문서를 추가하거나 하는 등의 기능을 손쉽게 구현할 수 있다. Download Kibana Free | Get Started Now Download Kibana or the complete Elastic Stack (formerly ELK stack) for free and start visualizing, analyzing, and exploring your data with Elastic in minutes. www.elastic.co bin 디렉토리에 kibana와 kibana.bat 파일이있다. 환경에 맞게 실행하되, 키바나가 실행하기 전에 elasticsearch가 실행되고 있어야한다..
엘라스틱서치로 실제 서비스를 운영할 때는 최소 3개 이상의 물리적인 노드로 클러스터를 구축하는 것이 좋다. 테스트 모드에서는 목적성이 다르기 때문에 싱글 모드로 구성하기도한다. Elasticsearch 설치 엘라스틱서치는 자바로 개발되었다. 그 말은 java runtime이 필요하다는 의미로 JRE만 설치해도 무방하나 JDK를 설치하는 것을 권장하고있다. 참고로 엘라스틱서치 8 버전부터 java 17을 권장한다. (java를 설치하는 과정은 스킵.) Download Elasticsearch Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in m..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/czN374/btsA9irUHqY/mx9LHU0SVtpC5VseDpIufK/img.png)
엘라스틱 서치 검색엔진은 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램이다. 검색 결과로 제공되는 데이터의 특성에 따라 구현 형태가 달라진다. 검색 시스템은 대용량 데이터의 검색 결과를 제공하기 위해 검색엔진을 기반으로 구축된 시스템이다. 수집기를 이용해 데이터를 수집하고 이를 다수의 검색엔진을 이용해 색인하여 UI로 검색 결과를 제공한다. 엘라스틱서치는 이와 같은 검색엔진이며 이를 사용하여 검색 시스템을 구축할 수 있다. 검색 시스템 검색 시스템의 구성 요소 검색 시스템은 데이터를 수집하는 수집기, 데이터를 저장하는 스토리지, 데이터를 검색에 적절한 형태로 변환하는 색인기, 색인된 데이터에서 일치하는 문서를 찾는 검색기로 구성된다. 수집기 수집기는 웹에서 필요한 정보를 수집하는 프로그램이다. 웹상..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/w8EGx/btss9ZlHYf5/XwcIF9lErWRBBkxXWJvNHk/img.png)
이전 포스팅에서 우리는 대표적인 낙관적 락과 비관적 락에대해서 간략하게 살펴보았다. 사실 나는 낙관적 락도 사용하지 않았고 비관적 락도 사용하지 않았다. DB의 부하를 줄일 수 있는 방법을 몰색하다가 redis를 사용한 [분산 락]이라고 하는 녀석을 파보았다. "왜 분산 락을 사용해야만 했는가?"에 대해서는 마지막에 언급하겠다. 분산 락 (Distributed Lock) 동시성 이슈(경쟁)로 동일한 리소스에 대해서 접근이 이루어질 때 리소스의 결함이 생기지 않게하기 위해서 분산된 서버들을 하여금 원자성을 보장한다. 분산서버로 쉽고 간편한 redis를 사용하였다. redis client 그렇다면 redis client로 무엇을 사용해야할까. 결론을 먼저 이야기 하자면 Redisson을 사용하는 것이 좋다...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bgWfyX/btssVLoGX8N/Crl39pKXtvaYjlyftzlngK/img.png)
최근 토이 프로젝트를 진행하면서 맞이한 동시성 이슈. 그 이슈는 "게시글의 조회수 증가"에서 맞이하게 된다. 서로 다른 사용자가 동시에 게시글을 열람한다면, 조회수는 +2가 되어야할테니... 따라서 동시성 이슈를 해결하기 위해 락을 획득하기로했다. 일반적으로 알고 있는 락은 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)이있다. 낙관적 락(Optimistic Lock) 동시에 동일한 데이터에 대한 수정을 서로 연관되지 않게 방지하는 기능으로써 해당 데이터의 "version"을 확인하여 엔티티의 변경을 감지한다. "낙관적"이라는 말처럼 "여러 트랜잭션이 동일한 데이터를 동시에 수정하지 않는다."라는 가정을 가지고 트랜잭션의 충돌을 방지한다. 한 마디로 "일단 데이터 가..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bEuw0v/btsp8zbGwTK/VVvPsOPKnOlygN5v0bK4L0/img.png)
일단 방금 유레카를 외치면서 한 바탕 감동의 쓰나미를 즐기다 왔다. 지금 토이프로젝트를 하고 있는데 워낙 사이즈가 크다 보니 별 삽질을 다 하는거 같다ㅜㅜ 방금 내가 무엇을 했냐면 minio로 Object Storage를 구축하고 CDN을 사용했다. Object Storage가 뭐고 CDN이 뭔지는 GPT가 나보다 더 잘 알려줄테니 넘어간다. 자!!! 오늘의 삽질을 기록한다. 1. minio 구축 일단 나의 서버는 arm architecture 32bit를 사용한다.(확인하는 방법 또한 gpt에게로..) minio 바이너리의 최신 버전을 받는다. cd /usr/local/bin/ wget https://dl.min.io/server/minio/release/linux-arm/minio 실행 권한을 부여한..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lFzaa/btso8zdSsx4/oKXudK8JCPADDq14g35BE0/img.png)
jenkins 2.4를 설치하려한다. 젠킨스는 jvm 위에서 동작하기때문에 젠킨스 버전 별로 자바 버전도 영향을 받는다. 그래서 젠킨스의 require java version을 알기 위해 아래 공식 포스팅을 보면 좋겠다. https://www.jenkins.io/blog/2022/06/28/require-java-11/ Jenkins requires Java 11 or newer As noted above, members of the Jenkins community began working on Java 11 support in 2018, well before the present author’s involvement in the project and well beyond the present autho..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b3D4z8/btr62Y3FF7C/ohMQYmKw11RKzp0elAve6K/img.png)
커널은 OS의 핵심이라고 봐도 무방할 정도로 시스템의 모든 것을 완전하게 통제한다. 운영체제의 다른 부분 및 으용 프로그램 수행에 필요한 여러 서비스를 제공하게되는데 [그림 1]과 [그림 2]을 함께 살펴보면 이해하기 쉬울 것이다. APP은 라이브러리를 통해서 개발이 되는데 라이브러리는 System Call을 통해서 kernel space에 진입하게된다. 만약 하드웨어의 자원이 필요하다! 그런다고하면 Device Driver를 통해 하드웨어에 접근도 가능하다. 그래서 리눅스 커널의 주요 기능은 뭘까? 하드웨어 관리/추상화 디바이스 드라이버만이 하드웨어가 제공하는 기능이나 프로토콜에 관여한다. 사용자 프로그램은 하드웨어에 종속정인 작업이 필요하지 않다. 프로세스와 스레드 관리 cpu 타임 공유와 메모리 보..