넥사크로(Nexacro)를 위한 GUI 자동 테스트 녹화기 개발기 (Python, Selenium, PyQt5)
·
파이썬/크롤링
안녕하세요! 이번 포스팅은 프로젝트 오픈을 앞두고 반복적인 QA와 부하 테스트에 지쳐있던 제가, 직접 자동화 툴을 만들게 된 과정을 공유하고자 합니다.특히 저희 프로젝트는 넥사크로(Nexacro) 기반의 웹/웹앱 환경이었는데, Non-UI 기반인 JMeter로 테스트 스크립트를 짜는 것은 정말 고통스러운 작업이었습니다. 😭 그러다 자동화 관련 컨퍼런스에 참여하게 되었고, 여러 부스에서 얻은 아이디어를 바탕으로 "이거다!" 싶어 직접 개발을 시작했습니다.부족한 지식은 ChatGPT와 Gemini 같은 AI의 도움을 받아가며, 드디어 GUI 기반의 사용자 행동 녹화/재생 및 부하 테스트가 가능한 저만의 툴을 완성했습니다.## 1. 왜 만들었나? (기존 방식의 한계)넥사크로(Nexacro)의 특수성: 넥사크..
Redis를 사용하여 로그 수합하기(이중화 sentinel 사용)
·
프로젝트
대용량 트래픽 상황에서도 안정적으로 로그를 처리하기 위해, Spring 애플리케이션에 Redis Sentinel을 이용한 고가용성(High-Availability) 로그 버퍼 시스템을 구축하는 과정을 A부터 Z까지 자세히 알아보겠습니다.DB에 직접 로그를 쌓다가 장애가 발생했던 경험이 있다면, 이 글이 좋은 해결책이 될 것입니다.1. 우리가 만들 시스템 아키텍처목표는 간단합니다. API 서버에서 발생하는 수많은 로그를 DB에 직접 저장하지 않고, 중간에 Redis를 '완충 지대(Buffer)'로 두어 안정성을 확보하는 것입니다. 이때 Redis 서버 하나가 죽더라도 서비스 중단이 없도록 Sentinel을 이용해 이중화하는 것이 핵심입니다.API 서버: 로그 발생 시 Redis에 빠르게 기록하고 응답Red..
Antlr를 이용한 쿼리 변환기 : 반복적인 MSSQL 마이그레이션 작업 자동화하기
·
WEB/Spring
안녕하세요! 이번 글에서는 레거시 데이터베이스 마이그레이션이나 ORM 표준화 작업 시 자주 마주치는 **SQL 자동 변환**이라는 흥미로운 주제를 다뤄보려고 합니다. 수백, 수천 개의 SQL을 사람이 직접 바꾸는 것은 너무나도 힘든 일이죠.강력한 파서 생성기인 ANTLR을 이용해 T-SQL(MS-SQL) 쿼리를 분석하고, AS-IS 테이블과 컬럼명을 TO-BE 표준에 맞게 자동으로 변경해 주는 Java 프로그램을 함께 만들어 보겠습니다.🚀 ANTLR이란 무엇일까요?ANTLR은 'ANother Tool for Language Recognition'의 약자로, 특정 언어의 문장을 읽고 그 구조를 분석하는 프로그램, 즉 파서(Parser)를 자동으로 만들어주는 파서 생성기(Parser Generator)입니..
Python과 Selenium을 사용하여 웹 크롤링하기(스크린샷, 워드 파일 생성)
·
파이썬/크롤링
Selenium을 활용한 웹 자동화 - 메뉴 접속 후 캡처 및 Word 문서 저장1. Selenium이란?Selenium은 웹 애플리케이션을 자동화하는 오픈소스 도구로, 주로 테스트 자동화 및 데이터 크롤링에 사용됩니다. 2. 주요 기능로그인 자동화특정 메뉴 탐색 후 버튼 클릭화면 캡처 후 Word 문서 저장 3. 사용한 함수 정리함수명설명handle_alert()팝업 알림이 발생하면 자동으로 닫음wait_for_loading_to_complete()로딩 이미지가 사라질 때까지 대기main()전체 실행 과정 수행 4. 실행 방법Selenium 설치bashpip install selenium python-docx 크롬 드라이버 다운로드 및 설정Python 코드 실행 5. 결과물실행이 완료되면 메뉴별 화면이..
[Java] replaceAll 정규 표현식 사용방법
·
자바/개념
String.replaceAll('From','to')- replace와 다르게 해당 문자열의 From 을 to로 변환해주는 함수이다. 1. 문자 의미^문자열의 시작$문자열의 종료.임의의 한 문자(필수입력, 문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음*앞 문자가 없을 수도 무한정 많을 수도 있음+앞 문자가 하나 이상?앞 문자가 없거나 하나있음[]문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다.{}횟수 또는 범위를 나타낸다.()소괄호 안의 문자를 하나의 문자로 인식|패턴 안에서 or 연산을 수행할 때 사용\s공백 문자\S공백 문자가 아닌 나머지 문자\w알파벳이나 숫자\W알파벳이나 숫자를 제외한 문자\d숫자 [0-9]와 동일\D숫자를 제외한 모든 문자\정규표현식 역슬래시(..
Spring Cloud Config Server 설정하기2(Spring Cloud Bus)
·
WEB/Spring
Spring Cloud Bus는 분산 시스템에서 여러 애플리케이션 간에 메시지를 통해 이벤트를 전달하고, 설정 변경 등의 작업을 일괄적으로 처리할 수 있도록 돕는 모듈입니다. 주로 Spring Cloud Config와 함께 사용되며, 여러 마이크로서비스에 대한 설정 변경이나 이벤트 전파를 쉽게 관리하는 데 유용합니다.  주요 기능과 역할분산된 애플리케이션 간 이벤트 브로드캐스팅:Spring Cloud Bus는 메시지 브로커(예: RabbitMQ 또는 Kafka)를 사용하여 애플리케이션 간에 이벤트를 브로드캐스트합니다. 이를 통해 모든 마이크로서비스에 한 번의 명령으로 설정 변경, 캐시 초기화, 상태 업데이트 등을 적용할 수 있습니다.설정 변경 반영:Spring Cloud Config와 함께 사용하면, C..
Spring Cloud Config Server 설정하기1(Spring Cloud Config)
·
WEB/Spring
Spring Cloud Config Server는 분산 시스템에서 구성 파일을 중앙에서 관리하고 동적으로 업데이트할 수 있도록 해주는 중요한 도구입니다. 이는 애플리케이션이 여러 환경에서 일관성 있게 실행될 수 있도록 구성 관리 문제를 해결합니다. 여기서 Spring Cloud Config Server를 사용하는 이유와 장단점을 살펴보겠습니다.  장점중앙화된 설정 관리: 여러 애플리케이션의 설정을 한 곳에서 관리할 수 있어, 설정 파일의 중복을 줄이고 일관성을 유지할 수 있습니다.환경별 설정 관리: 로컬, 개발, 테스트, 프로덕션 등 환경별로 설정을 구분하여 관리할 수 있으며, 이를 통해 각 환경에 맞는 설정을 쉽게 적용할 수 있습니다.실시간 설정 변경 반영: Spring Cloud Bus 또는 Actu..
Spring Boot JWT(JSON Web Token) 설정하기
·
WEB/Spring
JWT(JSON Web Token) 란?JWT는 유저를 인증하고 식별하기 위한 토큰(Token) 기반 인증입니다.토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함됩니다.RESTful과 같은 무상태(Stateless)인 환경에서 사용자 데이터를 주고받을 수 있게 됩니다.세션(Session)을 사용하게 될 경우 쿠키 등을 통해 사용자를 식별하고 서버에 세션을 저장했지만, 토큰을 클라이언트에 저장하고 요청시 HTTP 헤더에 토큰을 첨부하는 것만으로도 단순하게 데이터를 요청하고 응답받을 수 있습니다. JWT는 JSON 형식을 사용하여 정보를 안전하게 전송하기 위한 개방형 표준(RFC 7519)입니다. JWT는 서버와 클라이언트 간에 정보를 전송하는 데 널리 사용되며, 주로 인증과 권한 부여를..
Spring Boot AOP 적용 방법(Log, Transaction)
·
WEB/Spring
AOP  VS OOP객체 지향 프로그래밍(OOP)OOP의 주요 개념:클래스(Class) : 객체의 설계도. 속성과 메서드를 정의하는 틀입니다.객체(Object) : 클래스를 통해 생성된 실체로, 실제로 동작하는 프로그램의 단위입니다.상속(Inheritance) : 기존 클래스를 확장하여 새로운 클래스를 만드는 기능입니다.다형성(Polymorphism) : 동일한 이름의 메서드가 다른 동작을 수행할 수 있게 하는 기능입니다.캡슐화(Encapsulation) : 객체의 속성과 메서드를 외부에서 직접 접근하지 못하도록 숨기는 기능입니다.추상화(Abstraction) : 복잡한 시스템을 단순화하여 핵심 기능만 노출하는 기능입니다.OOP의 장점:코드 재사용 : 상속과 다형성 등을 통해 코드의 재사용이 용이합니다...
Spring Boot로 MSA 개발하기
·
WEB/Spring
Spring Boot MSA 정의1. 마이크로서비스 아키텍처(MSA, Microservices Architecture)정의: MSA는 애플리케이션을 여러 개의 독립적이고 자율적인 작은 서비스들로 분리하여 개발하고 운영하는 아키텍처 스타일입니다. 각 서비스는 특정 비즈니스 기능을 담당하며, 서로 독립적으로 배포, 확장 및 유지보수가 가능합니다.2. 스프링 부트(Spring Boot)정의: 스프링 부트는 스프링 프레임워크의 하위 프로젝트로, 복잡한 설정 없이 간단하게 스프링 기반 애플리케이션을 개발할 수 있게 해주는 프레임워크입니다. 자동 설정, 내장 서버, 독립 실행형 애플리케이션을 쉽게 만들 수 있는 기능들을 제공합니다.3. 스프링 부트 MSA의 주요 특징서비스 분리: 각 마이크로서비스는 독립적으로 개발..
Spring Boot와 React를 사용하여 MSA 프로젝트 만들기
·
프로젝트
Spring Boot와 React.js 를 모두 구성하여 MSA로 모듈별 프로젝트를 생성 및 관리 사용한 툴React, Spring Boot, HTML5, MySql, vscode, ECLIPSE, Spring Security, Gradle, Redis, RabbitMQ 개요리액트와 스프링 부트를 연동하여 MSA로 구성된 프로젝트를 만들고 싶었습니다. 현재 두개의 모듈과 하나의 데이터 베이스로 연동을 하였고 JWT를 사용하여 인증 설정을 해놓았습니다. 설계 Spring 구성사용한 버전Node : v20.16.0 Spring Boot : 3.3.3 JDK : 17 react : 18.3.1redis : 3.05RabbitMQ : 3.13.7 React 구성요소# 프로젝트 생성 및 실행mkdir 본인 프로젝..
[프로그래머스] 리코쳇 로봇 - Java(자바)
·
자바/코딩테스트
문제 이해리코쳇 로봇이라는 보드게임이 있습니다.게임판에는 "." - 빈공간, "R" - 로봇, "D" - 장애물, "G" - 목표지점 으로 구성되어있고 "R", "G는 무조건 하나씩 존재합니다.로봇이 목표지점으로 갈 수 있는 최소의 경로를 찾아야합니다.로봇은 상하좌우로 움직일수 있으며 한번 움직일때 미끄러져서 맨끝까지 가거나 장애물을 만나기전까지 멈추지 않습니다.로봇이 목표지점으로 갈 수 없다면 -1로 return 해주세요로봇이 상하좌우 움직일때마다 맨끝까지 or 장애물에 멈추게 move 함수를 만든다.0 - 상 , 1 - 하, 2 - 좌, 3 - 우 로 판단하여 만들었다.움직일 때마다 이동 count + 1 하고 방문했던적이 없다면 큐에 집어 넣고 아니라면 방향을 바꿔가며 이동한다.이동한 좌표가 "G"..
대전집주인
'분류 전체보기' 카테고리의 글 목록