JJONG`sFACTORY

전체 글

개발, 맛집, 여행에 대한 정리!
스케줄러를 큐로 돌려서 서버 부하를 최소화 하자! 어제 스케줄러에 대하여 포스팅을 했었다. 이미지 업로드, 대량의 데이터 연산 처리가 필요하기 때문에 queue를 이용하여 작업을 진행해야 한다고 했었었는데, Schedule에서는 기본적으로 queue를 지원해준다. 해당 기능을 이용하기 위해서는, 일단 laravel queue 세팅을 진행해 줘야 한다. php artisan queue:table 데이터베이스에 큐 대기열을 넣어주는 테이블 생성 코드를 저절로 만들어 준다. 당연히 이후 migrate를 시켜주면 테이블이 생성됨을 확인할 수 있다. php artisan migrate 이후, .env 파일에 다음을 추가해 준다. QUEUE_CONNECTION=database 이렇게 하면, 설정 완료! 사용방법 사..
혁종
혁종
일정 시간이 되면 저절로 컴퓨터가 작업 해 주면 좋겠는데.. 개발을 진행하다 보면 일정 시간이 되면 알아서 컴퓨터가 특정 작업을 해 주면 좋은 상황이 반드시 오게 되어 있다. 어떤 상황인지에 따라서 해결 할 수 있는 방법으로는 굉장히 여러가지가 있는데, 단순히 DB에 일정 데이터를 삽입하거나 수정하는 거라면 DB 자체의 스케줄링을 사용 해도 될 것이고 서버에서의 cron이나 window 서버라면 window 서버의 작업 스케줄링을 사용해도 될 것이다. 그 중에서도 이번에는 Laravel 의 Task Scheduling 기능에 대해 포스팅 해 보려고 한다. 왜 Laravel Scheduling을 사용해? 위에서는 여러가지 방안이 존재한다고 했는데, 왜 소스코드 상에서의 Scheduling을 사용할까? 당연..
혁종
혁종
데이터 동기화의 필요성 아무래도 게임 주제의 개인 프로젝트 이다보니, 게임은 계속 패치하는데 혼자 작업하다 보니 패치 속도를 따라가지 못해 누락되는 데이터가 너무 많다. 초창기에 해두지 않으면 나중에 모든 데이터를 동기화 하려면.. 로직 짜는데 엄청난 시간이 소비 될 것 같으니 미리미리 해 두려고 하는데, 작업 들어가기 전에 필요 기술들에 대해 나열하고 작업하면서 기록해 두려고 한다. 일단, API를 제공해주지 않기 때문에 자료를 열심히 찾아서 처음에 개발을 진행했었다. 데이터들은 다음과 같은 곳에서 가져 올 수 있었다. https://github.com/Kengxxiao/ArknightsGameData GitHub - Kengxxiao/ArknightsGameData: 《明日方舟》游戏数据 《明日方舟》游..
혁종
혁종
테스트에 대하여 알아보다 생긴 궁금증.. 각종 테스트 기법, 테스트 종류들에 대해 알아보고 예제들을 보다가 계속 가시지 않는 궁금증이 하나 생겼다. "그런데 이거, 효율적이긴 한거야? 보다보니까 굉장히 이상한데?" 비 효율적이라고 생각되는 부분이 한두가지가 아니었다. 코드 작성자가 테스트 케이스를 만들면, 아무리 범용적으로 생각하더라도 본인이 작성자 이기 때문에 통과 용도로 밖에 테스트 케이스를 짜지 못할 확률이 높다. 무조건 테스트 케이스를 먼저 만들고 개발에 들어간다면, 너무 비효율적이다. 테스트 케이스가 많아질수록 개발에 방해가 될 요소가 너무 많다. (인력은 한정되어 있고, 기간도 마찬가지. 테스트 케이스에 대한 cost가 점점 늘어만 가는데 이부분을 해결하느라 실제 개발에 소비되는 cost가 줄..
혁종
혁종
DevOps, TEST 데브옵스(DevOps)의 모델을 보면 계획 부터 모니터링에 이르는 사이클이 있다. DevOps가 중요한 이유는 현재에 이르어서는 당연시 여겨지고 있기는 한데.. 궁극적으로는 더 빠르고 안전하게(오류없이) 소프트웨어를 제공함이 목적이다. 이 중에서도 TEST에 관한 부분에 대한 약간.. 개인적인 의견이 들어간 고찰(?)을 해보자고 한다. 테스트, 테스트 피라미드 테스트의 종류는 크게 세가지로 나뉘어 진다. 유닛 테스트(Unit Test), 통합 테스트 (Integration Test), E2E (End To End Test) 각각 짧게 알아보자면, - 유닛 테스트 (Unit Test) 유닛 테스트는 테스트 단계중 가장 작은 부분에 속하는데, 보통 작성한 함수가 정상적으로 돌아가는지를..
혁종
혁종
1. Typescript용 jest 설치 먼저, typescript에서 사용할 수 있게끔 jest를 설치해 준다. npm install ts-jest @types/jest --save-dev production 빌드시에는 jest가 필요 없으므로, --save-dev를 넣어서 설치해 주도록 하자. 2. babel 종속성 설치 https://jestjs.io/docs/getting-started#using-typescript Getting Started · Jest Install Jest using your favorite package manager: jestjs.io jest 페이지를 보면, Jest는 Babel을 통해 TypeScript를 지원한다고 나와 있다. 이에 필요한 모듈들은 다음과 같다. 1..
혁종
혁종
Redux->Mobx 전환 처음에 typescript를 사용하지 않고 개인 프로젝트를 진행했었는데, typescript를 적용하면서 기존에 store로 이용한 redux를 배제하고 mobx를 사용하기로 했다. 여러 이유가 있긴 한데, 가장 적합한 이유는 redux보다 사용하기가 편하다는 것. 코드량도 확실히 줄어듬을 느꼈다. 또한, 기존에 작업해둔 결과물에서는 store에 통신부분이 같히 엮여있었는데, useQuery를 사용함으로서 store 부분의 통신부분을 배제 할 겸 mobx로 전환하여 다시 개발 하기로 했다. 둘의 차이와 mobx의 장점은 배달의민족으로 유명한 우아한형제들 블로그에 자세히 기재되어 있었다. React에서 Mobx 경험기 (Redux와 비교기) | 우아한형제들 기술블로그 {{item..
혁종
혁종
서론 지난번에는 Ansible과 gitAction을 통해 EC2에 자동 배포하는 인프라를 구축했었다. [gitAction] Ansible + gitAction을 이용한 EC2 자동배포 서론 이전에 Ansible playbook을 실행하면 각 서버에 배포 할 수 있게끔 처리를 해 두었다. 이제, git에 push가 실행되었을 때 해당 playbook을 실행할 수 있게 처리해 두면 진짜 자동배포가 완료된다! 변 jjong-factory.tistory.com 문제는, 마지막에도 언급 했듯이 잠시 테스트 용으로 만든거라 SSH 인증쪽을 전부 뚫어 놨다는 것.. 세상에는 나쁜 사람들이 많기 때문에 구멍난 곳을 서둘러 막아줘야 한다..! 그러기 위해서 먼저, 보안그룹을 설정할 수 있는 IAM 계정을 하나 만들어야 ..
혁종
혁종
XSS 공격에 대한 Middleware 구축 app\Http\Middleware에 파일을 생성한다. php artisan을 사용해도 되고 그냥 만들어도 된다.. 추가한 Middleware에 다음과 같은 내용을 추가합니다.
혁종
혁종
서론 이전에 Ansible playbook을 실행하면 각 서버에 배포 할 수 있게끔 처리를 해 두었다. 이제, git에 push가 실행되었을 때 해당 playbook을 실행할 수 있게 처리해 두면 진짜 자동배포가 완료된다! 변수값 세팅 git Action에서 EC2 서버에 접근 할 수 있어야 하기 때문에, repo->Setting->Secrets and variables에 SSH_KEY값, HOST값, USER 값을 추가해 준다. deploy Action 작성 repo->gitActions->New workflow를 눌러 준 뒤, set up a workflow yourself를 눌러준다. name: deploy on: workflow_dispatch: push: branches: - [master-br..
혁종
혁종
서론 저번에 Ansible role을 일단 만들어 두었는데, 이를 이용하여 github을 여러 서버에 배포하는 playbook을 만들어 보자. 만든 role의 tree 구조는 다음과 같다. . ├── README.md ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml 변수 세팅 정적 변수는 defaults의 main.yml에 작성한다. --- # defaults file for arkinfo-deploy server..
혁종
혁종
Ansible role? Ansible role은 개발로 치면 일종의 FrameWork이라고도 볼 수 있겠다. 관리해야 할 서버가 많아지고, 해야 할 작업들이 많이지게 되면 playbook들도 많아 지게 될거고, 유지보수가 쉬우려고 사용한 Ansible을 유지보수 하느라 시간낭비를 할 수 도 있게 되는 상황이 올텐데 디렉토리 구조를 지정해 줌으로 써 이러한 상황들을 방지하는 역할이다. https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html Roles — Ansible Documentation The classic (original) way to use roles is with the roles option for ..
혁종
혁종