본문 바로가기

분류 전체보기

(84)
리눅스 연습하기 #1 ) docker를 이용해 CentOS 구축 필자가 일하는 회사에서는 aws를 이용해 서버를 구축해놓았고 서버 모두 centOS로 되어있다. 본래 다른 프로젝트를 하고있다가 이제 팀 프로젝트에 참여하므로 리눅스를 공부해야 할 필요성을 느꼈다. log파일을 확인하고, 서버를 내리고 올리고하는 등등의 작업을 linux를 통해 하기때문에 명령어 연습을 하는게 좋을 것 같다는 생각이 들었다. 먼저 연습을 위한 리눅스 서버를 만들어보자! 팀 프로젝트 서버환경에 맞게 CentOS 7버전으로 구축하고자 한다. 1. 이미지 다운로드 docker pull centos:7 2. 컨테이너 실행 docker run -i -t centos:7 /bin/bash 3. 패키지 업데이트 yum update
#5) 안동버스 API 적재 및 조회 프로그램 완성 적재API는 안동 버스정류장 별 버스 도착정보를 DB에 적재하는 역할 - 적재 프로세스 : 1. 안동버스 open api 호출 response 원문을 elasticSearch에 적재 2. http code 200이면 캐싱을 위해 redis에 적재 (타임아웃 10분) 3. kafka를 이용해서 데이터를 컨슈머에 넘김 4. 컨슈머는 kafka에 넣어진 데이터를 가져와서 JPA를 사용해 Mysql에 적재 5. 에러발생시, mongo에 exception 정보 적재 조회API는 적재된 버스 도착정보를 불러오는 역할 - 조회 프로세스: 1. Redis에 캐싱된 값이 있으면 redis에 적재되있는 값을 조회 2. Redis에 캐싱된 값이 없다면 mysql에 적재되어있는 최신 데이터을 조회 3. Redis, mysql..
#4) kafka로 데이터 발행(Publish)과 구독(Subscribe) 동작하기 카프카는 대용량의 실시간 로그처리에 특화되어 있는 솔루션이며, 데이터 유실없이 안정적으로 메세지를 전달할 수 있다. 분산환경에 특화되어 설계되어 있다는 특징이 있으며 다른 메세지 큐(ex.RabbitMQ)보다 성능적으로 뛰어나다고 한다. Publisher-Subscriber 모델 발행과 구독 모델을 사용한다. 발행과 구독이란 메세지를 특정 수신자에게 다이렉트로 전달하는 시스템이 아니다. Publisher는 메세지를 topic을 통해서 카테고리화하고 Subscriber는 그 topic을 구독함으로써 메세지를 읽어올 수 있다. Publisher는 topic에 대한 정보만 알고있고, Subscriber도 topic만 바라보기 때문에 발행자와 구독자는 서로 모르는 상태다. topic과 partition 메세지는..
#3) Redis(레디스)로 캐싱하기 Redis(레디스)는 메모리 기반의 “키-값” 구조 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 NOSQL 중 하나이다. 인메모리 기반이지만 삭제 명령을 하지않으면 영속성을 지원하는 인메모리 데이터 저장소이고 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding)을 지원한다. 그래도 메모리 기반이기때문에 데이터 적재용으로 쓰기에는 무리가 있을 것으로 보인다. 출처 : 조대협님의 블로그 다음의 그림과 같이 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원한다. Redis와 Springboot 연동 1. pom.xml에 Redis dependency 추가 org.springframework.boot spring-bo..
#2) 엘라스틱서치(Elasticsearch)로 원문 데이터를 저장하기 엘라스틱서치는 JSON구조를 사용해 스키마가 동적으로 변화할 수 있는 특징을 가진다 그렇기 때문에 필요없는 데이터 컬럼은 빼서 저장할 수 있으므로 데이터 공간을 절약할 수 있다. 그리고 기본적으로 검색엔진이므로 검색 기능에 빠르고 강력한 기능이 탑재되어있다. 또한 다양한 프로그램 언어를 지원하고 REST API를 제공해 HTTP 형식으로 사용할 수 있다. RDBMS와 비교해보면 다음과 같다. RDBMS Elasticsearch Database Index Table type Row Document 키바나(Kibana)는 ELK에서 K를 맡고있는 솔루션이다. 엘라스틱서치와 연계하며 유저 인터페이스를 제공한다. 즉, 엘라스틱서치의 GUI툴이라고 쉽게 생각하면 될것같다. Elasticsearch와 springB..
#1) 안동버스 API 연동 계획 어느덧 입사한지 7개월이 지났다. 현재 유명 IT회사의 서비스의 고객센터에서 사용하는 솔루션을 개발 및 유지보수중인데 조만간 팀 프로젝트도 참여를 할 예정이다...(아마도) 지금 우리팀 프로젝트에서 사용되는 mongDB, Redis, ElasticSearch, Kafka, MSA 등등은 지금 내가 맡고있는 프로젝트에서는 사용하지 않아서 접해보지 못했다.. 팀 프로젝트 참여 전 공부하기 위해 안동버스 open api를 이용해서 간단한 토이프로젝트를 만들어보고자 한다! 안동버스 open api 가이드 홈페이지 bus.andong.go.kr/m01/s04.do?c=20400&i=20440&tab=2 안동시 버스정보시스템 안동시 버스정보시스템 bus.andong.go.kr 개발환경 - IDE : intelliJ..
퍼시스턴스 프레임워크(Persistence Framework)와 mybatis 퍼시스턴스(persistence)는 영속성이란 뜻으로 영어단어 뜻처럼 지속됨 이라는 뜻이다. 데이터를 생성한 프로그램의 실행이 종료되도 사라지지않는 데이터의 특성을 의미한다. 영속성을 가지지 않는 데이터는 단지 메모리에 존재해 프로그램이 종료되면 없어진다. 데이터가 영속성을 가지려면 파일 시스템, 데이터베이스를 활용해 구현하면 된다. 퍼시스턴스 프레임워크(Persistence Framework)는 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합이고 간단한 작업으로 데이터베이스와 연동되는 시스템을 개발하고 안정적인 구동을 보장하므로 JDBC프로그래밍의 복잡함과 번거로움을 해소해줄 수 있다. · 종류 - SQL문장으로 직접 DB데이터를 다루는 SQL 맵퍼 - 자바 객체를 통해 간접..
컨테이너 개발? 쿠버네티스? 어느덧 입사한지 2달이 흘렀다. 나는 유명한 IT회사가 운영하는 서비스의 실시간 채팅 상담사가 사용하는 솔루션을 운영/유지보수 및 개발중이다. 신입이 맡은 프로젝트 치고는 굉장히 사용하는 기술이 수준있고 같이 일하는 선배님들의 실력이 높기때문에 배울것도 많아서 나의 경력과 실력 향상에 큰 도움이 되는 것 같아 만족하고 있다! 비록 E-commerce 개발은 아니지만 이 프로젝트를 끝내 실력이 향상되면 내년 말부턴 코어 개발팀에 합류해서 E-commerce 개발을 할 수 있을 것 같다. 내가 맡고있는 이 프로젝트는 쿠버네티스를 사용한다. 난 쿠버네티스에 대해서 잘 모르기때문에 공부하는 시간을 가지고자 한다. 1. 쿠버네티스란 무엇인가? 컨테이너는 VM과 유사하지만 어플리케이션 간에 운영체제(OS)를 공유한..

반응형