본문 바로가기

분류 전체보기84

Session Storage 선택과정 Storage라 하면 크게 SQL, NoSQL을 생각해볼 수 있습니다. SQL databases Db2 MySQL PostgreSQL Oracle Database Microsoft SQL Server NoSQL databases Redis MongoDB Elasticsearch Memcached 하지만 Session을 저장하기위해 사용하는 부분인 만큼 빠른 응답속도가 뒷받침되어야 했습니다. 여기서 잠깐 정리하자면 왜 빨라야 할까요? 현재 제가 토이 프로젝트로 진행하고있는 Careers에서는 로그인 세션을 저장하고 관리할 Storage를 찾고 있습니다. 당연히 서비스를 이용하기 위해서는 로그인을 한 상태여야 하며, 이는 서버가 모든 요청이 들어올 때 마다 Session Storage에 가서 Set-Cook.. 2021. 7. 29.
Jenkins를 통한 CI/CD 도입 젠킨스를 사용한 이유 https://github.com/f-lab-edu/careers 프로젝트를 어느정도 진행하다보니 CI/CD를 적용해야될 때가 되었다. 자바진영에서는 CI/CD 툴로 젠킨스를 가장 많이 사용하는 걸로 알고있다. 그래서 젠킨스의 CI/CD를 도입하여 프로젝트 개발에만 집중할 수 있도록 이참에 환경 구성을 해보았다. CI란 Continuous Integration 즉 지속적인 통합을 의미한다. 개발자가 개발을 하면 그 코드들은 결국은 다른 여러 개발자들과의 코드들과 Merge가 되어야 한다. 이때 CI를 반영하지 않고 나중에 몰아서 처리하게 된다면 Merge양과 범위에 따라 개발자들의 시간과 리소스를 투자해야 한다. 하지만 CI를 사용하면 CI툴이 특정 이벤트를 받아 빌드, 테스트, M.. 2021. 7. 7.
Java CheckStyle 적용 프로젝트를 진행하면서 혼자 코드를 작성하는 것이 아니라 협업을 하다 보니 코드 품질이 떨어지는 현상이 발생하였습니다. 이를 해결하기 위해 프로젝트에 CheckStyle을 반영하는 과정을 공유하고자 합니다. Intellij에 Checkstyle반영 처음에는 각자의 IDE에 checkstyle 파일을 다운받아 개발 시 적용될 수 있도록 설정하였습니다. 몇몇 설정들은 상의하에 수정하여 가독성을 향상시켰습니다. 하지만 프로젝트가 진행될수록 간헐적으로 자동정렬 단축키를 누르지 못한 파일들이 생겨나고 카멜표기법 등 일관되지 않는 코드들이 커밋되어가고 있었습니다. 이런 문제들이 종종 발생하여 다른 방법을 찾아보게 되었습니다. Git Pre commit에 Checkstyle 적용 찾아보니 Git에서는 Pre Commi.. 2021. 6. 10.
대규모 서버들의 세션 처리방법 들어가기기 앞서... 이전 포스팅에서 말씀드린대로 Scale out을 프로젝트에 반영하기로 하였습니다. 혹시라도 왜 Scale up이 아닌 Scale out을 선택하였는지 궁금하신 분들이 있으시다면 이전 포스팅을 참고 부탁드립니다. Scale out을 반영한다고 했는데 너무 막연했습니다. 뭘 어떻게 해야하지?? 일단 사용자의 요청부터 의식의 흐름대로 생각해 보도록 하였습니다. 대규모 트래픽을 감당하기위해 서버를 여러 대 두었고.. 그러면 사용자들이 로그인을 하고 A서버에 접근해서 데이터를 가져오고 그 다음 요청할때 A가 아닌 B서버에서 데이터를 가져오고.. 🤔....? 데이터를 가져올 수 있나? A서버로 로그인 요청을 처리해서 B 서버는 세션정보가 없는데..? 그럼 로그인 요청을 처리한 A서버 한테만 요.. 2021. 4. 29.
대규모 트래픽을 고려한 서버 확장 방법 요즘 제공되는 거의 모든 IT 서비스들은 네트워크를 통해 서버와 통신을 하여 사용자에게 원하는 데이터를 제공해 줍니다. 이 말을 달리 표현하자면 사용자들의 요청에 비례하여 서버의 처리량은 증가할 수밖에 없습니다. 서버의 처리량 증가라는 말은 서버의 부하가 증가한다는 말과 동일하며 부하를 감당하지 못하는 서버는 사용자가 요청한 정보를 신속하게 처리할 수 없게 됩니다. 이러한 문제점을 해결하기 위한 방안으로 Scale up, Scale out이란 개념이 있습니다. 이후 내용은 제가 토이프로젝트를 하면서 어떻게 고민하고 어떤방식을 도입하였는지 등의 고민들을 함께 나눠 보고자 합니다. 일단 진행하기에 앞서 간단하게 Scale up , Scale out에 대한 개념을 정리해 보고자 합니다. 개념정리 Scale o.. 2021. 4. 6.
Pulseaudio 개념정리 개념 pulseaudio는 네트워크 기능이 있고 사운드를 관리하는 서비스이다. 서비스 구조 입력장치인 마이크, 캡쳐장치로부터 사운드를 가져와 하나 이상의 싱크(사운드 카드, 원격 네트워크 펄스오디오 서버, 기타 프로세스)로 전달하는 백그라운드 프로세스인 사운드 서버 참조: pulseaudio의 목표 사운드에 관련된 모든 접근은 하드웨어를 직접 접근하는 것이 아닌pulseaudio를 통해서 접근하도록 기능제공. 2020. 8. 10.
wsl에 oh-my-zsh 설치하기 wsl을 통해 개발환경을 셋팅하기 위해 oh-my-zsh을 설치하려고 한다. 우선 window terminal을 실행 후 설정탭을 클릭하여 settings.json파일을 연다. 아래 사진처럼 설정값을 변경한다. zsh을 설치 후 로그아웃 sudo apt install zsh chsh -s /usr/bin/zsh # 기본 쉘을 zsh로 변경 wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh # oh-my-zsh 설치 logout .ttf파일을 더블클릭하여 window에 font설치 (oh-my-zsh이 사용하는 폰트) https://github.com/powerline/fonts/tree/master/De.. 2020. 6. 6.
window terminal theme 설정 드디어 window에서 linux를 안전하게 사용할 수 있는 정식버전인 2004로 업데이트 되었다. 개인적으로 너무 기다렸던 버전인데 개발을 시작하기전에 window terminal 설정을 한번 해보려고 한다. theme 설정 power shell을 열어 설정메뉴를 클릭한다. 그러면 terminal의 theme를 설정을 변경할 수 있는 settings.json파일이 열린다. 해당 경로에서 원하는 theme를 선택 한다.(https://atomcorp.github.io/themes/) settings.json파일에 schemes키 부분의 value값으로 복사한 theme값을 붙여넣는다. defaults에 추가로 폰트 설정, 폰트 크기, 테마이름 등을 설정한다. "defaults": { // Put sett.. 2020. 6. 6.
docker-compose.yml 만들기 version: '3.1' services: database: image: mongo:4.2.6 container_name: smartordb restart: always environment: MONGO_INITDB_DATABASE: admin MONGO_INITDB_ROOT_DATABASE: admin MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: 1234 volumes: - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro - ./mongod.conf:/etc/mongod.conf - ../data:/data/db ports: - '27017:27017&#3.. 2020. 6. 3.