전체 글
-
Redis Container vs Embedded Redis 어떤 것을 선택해야 할까요?TIL 2023. 6. 7. 12:19
🍎 Test Package에서 Redis 환경 구축 중 어떤 Redis 환경을 선택해야 할지 고민이 생겨 글을 포스팅합니다. 📚 Redis Container vs Embedded Redis 두 환경은 Redis를 사용하지만 다른 점이 존재합니다. 각각의 장단점을 알아보고 어떤 조건에서 어떤 환경을 선택해야 하는지 알아봅시다. 🍎 Redis Container의 장단점 - Container Redis는 독립된 Redis 서버를 Container 형태로 실행합니다. 주로 Docker를 사용합니다. ✅ 장점 - 외부 Redis 서버와 동일한 기능과 구성 옵션을 제공합니다. 테슽 환경에서 실제 운영 환경과 동일한 Redis 서버를 사용할 수 있습니다. - 복잡한 환경이나 다른 시스템과의 통합 테스트를 보다 유연하..
-
[Tip] Tistory에 Toggle 기능 만들어 사용하기잡다한 글 2023. 5. 8. 23:47
🍎 Tistory에 "접는글"이 아닌 Toggle을 기능이 존재하지 않아 Html Code를 살짝 수정해 아래 폼을 만들어봤습니다. 🍏 가이드를 따라오시면 아래 Toggle 기능을 글에 적용시킬 수 있습니다. toggle start Inner toggle -1- Inner toogle contents -1- Inner toggle -2- Inner toogle contents -2- 1. Tistory User Admin Page에서 꾸미기 -> 스킨 편집을 누릅니다. 2. 우측 상단 스킨 편집에서 HTML 편집을 누릅니다. 3. 편집 대상인 CSS를 눌러아래 코드를 입력 후 적용합니다. .toggle-indent{ margin-left : 20px; // 해당 부분을 수정하시면 들여쓰기 정도를 변경할 ..
-
[Python] Multi Processing과 [Java] Multi Processing 차이TIL 2023. 4. 24. 20:12
🍎 Python Crawling Application을 개발하면서 I/O Bound 작업 처리는 Thread를 사용해 처리하는 것이 유리하고 CPU Bound 작업 처리 시엔 자식 프로세스를 여럿 생성해 작업을 처리하는 것이 유리하다고 배웠습니다. 그런데 Java 진영에선 Multi Processing을 어떻게 처리할까요? ❓ 어디서부터 비롯된 궁금증인가요? • Python 진영에선 Multi Processing을 자식 프로세스를 생성해 CPU Bound 작업을 맡아하는 반면 Java 진영에선 여러개의 JVM Instance를 추가적으로 생성해 처리하지 않습니다. 어떤 방식으로 Java 진영에서 Multi Processing을 처리할까요? 🍎 Java는 Thread를 통해서 Multi Processing..
-
노출되면 안되는 데이터는 어떤 방식으로 처리할 수 있을까요?TIL 2023. 4. 16. 13:45
🍎 주소 값을 기반으로 외부 API와 통신해 좌표를 얻어 올 수 있었습니다. 여기서 고민할 부분이 생겼습니다. 외부 API 요청에 대한 응답 시 계정에 부여된 ClientId, ClientKey를 어떤 방식으로 관리하는지입니다. 🍎 노출을 관리해야 하는 이유는 외부에 ClientId, ClientKey가 노출되면 불특정 사용자가 API를 사용하게 될 것이고 이는 많은 문제를 유발할 수 있기 때문입니다. ❓ 외부에 노출되면 안 되는 데이터는 어떤 방식으로 관리해야 안전할까요? 🍏 찾아본 결과 크게 세 가지 방법이 존재합니다. 1. Hard Coding : 필드에 노출되는 값을 정의하고 사용합니다. 2. 환경 변수에 등록해 사용 : Spring 환경에서 @Value를 통해 값을 주입해 사용합니다. 3. 외부..
-
[Python] Thread 설계 의도를 파악한 성능 개선. 7초에서 3초로TIL 2023. 4. 11. 14:42
💻 Crawling Application Code에서 I/O Bound 작업 처리 시, threading Module과 concurrent.futures Module를 사용했습니다. - 두 Module의 장단점을 알지 못한 채 사용해 이번 포스팅에서 깊게 다뤄보겠습니다. 🍎threading Module과 concurrent.futures Module을 사용하는 이유는 해당 포스팅에서 확인할 수 있습니다. 🍎 thread.Thread와 concurrent.futures.ThreadPoolExecutor의 특징을 알아봅시다. 🍏thread.Thread의 특징 - Process안에 존재해 작업 처리 시 사용됩니다. Thread를 사용하는 두 가지 이유는 아래와 같습니다. 1️⃣ Target Method를 실행..
-
파이썬 성능을 높이고 싶을 때 알아야 할 것TIL 2023. 4. 6. 21:16
❓ 파이썬 환경에서 Multi Thread, Multi Processing의 차이점 그리고 성능을 높이고 싶다면? 파이썬에서 멀티 스레드와 멀티 프로세스는 동시에 여러 작업을 수행하는 방식이지만, 그 구현 방식에 차이가 있습니다. • 멀티 스레드는 한 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 방식입니다. 각 스레드는 공유된 메모리에 접근하여 작업을 수행합니다. 이로 인해 스레드 간의 통신이 빠르고 간단하며, 메모리를 공유하기 때문에 메모리 사용량이 적습니다. • 하지만, 공유 메모리에 대한 동시성 제어가 필요하며, 이를 관리하는데 복잡한 코드가 필요할 수 있습니다. 또한, Global Interpreter Lock 제약 조건이 있어 하나의 스레드만 파이썬 인터프리터 내에서 실행될 수 있습니다...
-
Crawling 성능 40배 올리기, 160분에서 4분대로 -병렬 처리-Dev Azit/크롤링 성능튜닝 여행기 2023. 4. 6. 16:33
👕 크롤링 애플리케이션은 JBLY 프로젝트 요구 사항인 "파이썬 환경에서 최소 세 개 이상의 쇼핑몰을 모아볼 수 있다."를 수행하는 애플리케이션입니다. 시리즈 포스팅은 성능 개선 과정에서 겪은 문제점과 해결하는 과정을 담고 있습니다. ✒️ 첫 번째 요구사항 충족 글은 성능이 개선되기 전 요구 사항 달성 과정을 포스팅합니다. (160분 소요) ✒️ 두 번째 도구 선택의 중요성 글은 Selenium Tool 걷어내는 과정에서 성능 개선 방법에 대해 포스팅합니다. (30분대로 성능 개선) ✒️ 세 번째 병렬 처리 글은 병렬 처리를 통해 성능을 높일 수 있는 방법에 대해 포스팅합니다.(4분대로 성능 개선) 🍏 지금까지 Selenium을 사용해 Crawling을 진행하고 Selenium 도구의 단점을 알게 되어 ..
-
Crawling 성능 40배 올리기, 160분에서 4분대로 -도구 선택의 중요성-Dev Azit/크롤링 성능튜닝 여행기 2023. 4. 5. 15:37
👕 크롤링 애플리케이션은 JBLY 프로젝트 요구 사항인 "파이썬 환경에서 최소 세 개 이상의 쇼핑몰을 모아볼 수 있다."를 수행하는 애플리케이션입니다. 시리즈 포스팅은 성능 개선 과정에서 겪은 문제점과 해결하는 과정을 담고 있습니다. ✒️ 첫 번째 요구사항 충족 글은 성능이 개선되기 전 요구 사항 달성 과정을 포스팅합니다. (160분 소요) ✒️ 두 번째 도구 선택의 중요성 글은 Selenium Tool 걷어내는 과정에서 성능 개선 방법에 대해 포스팅합니다. (30분대로 성능 개선) ✒️ 세 번째 병렬 처리 글은 병렬 처리를 통해 성능을 높일 수 있는 방법에 대해 포스팅합니다.(4분대로 성능 개선) 🍎 우선, Selenium에서 성능을 향상할 수 있는 방법을 찾아봤습니다. 🍏 Selenium을 사용해 요..