본문 바로가기

개발기술

(59)
웹 스크래핑 Jsoup 스크래핑 활용분야  여러 쇼핑몰의 데이터를 스크래핑해서 쇼핑몰간의 가격비교사이트, 특정 카테고리에 해당하는 아이템 모아서 한번에 보여주는 사이트, 여러회사의 취업공고를 모아서 보여주는 사이트, 업무 자동화, 핀테크 회사에서 사용자대신 공공데이터를 스크래핑 후 서류제출과정 대신하여 간편화, 무궁무진한 활용가능함 스크래핑 정책  main페이지의 robot.txt(https://finance.yahoo.com/robots.txt)을 조회하면 해당 사이트의 스크래핑 정책을 확인할 수 있다. 스크래핑을 허용한다고하여도 해당 사이트에 부하가 걸리지 않는 정도에서 운영하여야한다.  스크래핑  Jsoup library는 beautiful Soup의 java버전으로 해당 라이브러리를 사용한다.개발자는 자신의 서비스가 의..
데이터베이스 기술개념 - [북스터디] 데이터 베이스를 지탱하는 기술 1.데이터 베이스가 없으면 무엇이 곤란한가? 2. 인덱스로 고속 액세스 실현하기인덱스의 개념인덱스 : 리스트의 인덱스는 각 요소가 저장된 순서를 나타내는 숫자라면, 데이터베이스의 인덱스는 찾고자하는 레코드의 위치를 빠르게 탐색하기 위한 별도의 자료구조(B tree, Hash Table)이다. 데이터베이스는 Update문을 실행시킬때, record와 함께 index도 업데이트 하여 1가지 이상의 업데이트 행위를 함. 인덱스의 기본 원리 : 인덱스의 기본적인 원리는 대규모 데이터 집합에서 특정 데이터를 빠르게 찾기 위해 정렬된 상태를 유지하는 것입니다. 인덱스는 데이터베이스의 전체 데이터를 스캔하는 대신, 인덱스가 가리키는 특정 경로를 통해 데이터를 찾아 접근 시간을 단축합니다. B-트리 인덱스BST의 이진..
성능 최적화 전략 성능저하의 원인프로그램이 어떤 자원을 많이 쓰는지에 따라 CPU바운드, I/O바운드 작업으로 나뉜다. I/O 바운드 작업은 디스크, 네트워크, 파일 시스템 등과 같은 입출력(I/O) 작업을 많이 요구하는 작업을 의미한다. CPU-바운드 작업은 CPU의 연산 능력을 많이 요구하는 작업을 의미한다. 주로, 실무에서는 CPU-바운드 작업 보다는 I/O-바운드 작업이 많다. 메모리 계층구조에 따른 소요시간계층구조에 따른 소요시간이 다르다. 외부 데이터 접근을 최소화하는 것이 백엔드 입장에서 가장 중요한 성능적 로컬 SSD/HDD 접근 (디스크 I/O)SD: 100 ~ 500 마이크로초.HDD: 수 밀리초.내부 데이터베이스(DB) 접근 : 약 50,000 ~ 500,000 CPU 사이클(수백 마이크로초 ~ 몇 밀..
Spring 동시성이슈 해결 동시성이슈여러 요청이 동일한 자원에 접근하며 발생하는 문제를 통칭함. 주로 DB에서 동일한 레코드를 동시접근하면 문제가 발생.예) 사용자1과 사용자2가 계좌1의 잔액 1만원을 1천원 사용하는 요청을 동시에 보냈을때, 사용자1의 요청에 의해서 잔액이 9천원이 되기전에 사용자2의 요청이 시작되어 두 사용자의 요청 결과가 각각 잔액 9천원으로 저장되어 2천원 사용이 되어도 1천원만 감소하는 경우. 동시성이슈 해결방안1. DB의존적인 해결방식 : DB 기기의 Isolation Level을 Serializable로 장치를 하거나 JPA의 Optimist Lock, Pessimistic Lock을 사용하여 DB의 기능을 사용- 단점 : DB서버는 인프라 확장이 어려워 성능의 한계가 뚜렷한 기기이다. DB의존적인 방..
DB 트랜잭션 트랜잭션 정의트랜잭션 : 데이터 베이스의 상태를 변화시키기 위해 수행하는 작업단위. (DB에 쿼리문을 통해서 CRUD를 하는 행위)작업단위 :  여기서 작업단위는 작업단위의 세부 작업들을 묶음 정의하기 나름임, Spring에서 @Transacitional으로 표기한다. 트랜잭션의 필요성데이터 일관성 문제: 여러 작업이 하나의 트랜잭션으로 묶이지 않으면, 일부 작업만 완료되고 다른 작업은 실패할 수 있습니다. 이는 데이터의 일관성을 해칠 수 있습니다.데이터 무결성 문제: 트랜잭션 없이 수행된 작업은 롤백이 불가능합니다. 이는 애플리케이션의 데이터 무결성을 보장하는 데 큰 문제가 될 수 있습니다.동시성 문제: 트랜잭션은 동시에 접근하는 여러 트랜잭션 간의 충돌을 방지하고, 격리 수준을 통해 데이터의 일관성을..
스프링부트 전체구조 스프링 전체흐름1. Server Startup:When you start your Spring Boot application (or deploy it to a servlet container like Tomcat), the server begins its initialization process.2. Spring Boot Application Initialization:SpringApplication.run(): This method is called in your main() method, which starts the entire Spring application.Spring Boot Auto-Configuration: Spring Boot auto-configures the application c..
스프링 부트 환경설정 (스프링 Init, Package, Configuration) 스프링부트Spring Boot는 Spring Framework의 모든 기능을 포함하면서도, 개발자가 빠르게 개발을 시작할 수 있도록 추가적인 지원과 도구를 제공합니다. spring initializer(https://start.spring.io/)를 사용한자동 설정을 통해 Spring boot project의 구조를 알아서 만들어준다.  Spring 애플리케이션 구성을 간소화합니다. 반면, Spring Framework는 수동으로 빈을 구성하고 의존성을 주입해야 합니다. 스프링부트 프로젝트 생성spring initializer : 스프링 기반으로 프로젝트를 만들어주는 스프링 부트 사이트 (https://start.spring.io/)Project (빌드관리도구) : 라이브러리를 관리해주고 빌드 및 실행을..
Spring Persistence (JPA, JDBC, Entity, Repository) Persistence Framework데이터영속성(Persistence)이란 프로그램이 꺼져도 데이터는 사라지지 않는 것, 즉, 영구저장 DB를 사용하는 데이터를 말함. DB를 다루기 위해 필요한 프레임워크를 Persistence Framework라고 한다.  Persistence Framework를 사용하면, DB관련되어 개발자가 공통적으로 작성하는 코드를 대신하여 동작시켜주어, 코드 재사용 및 유지보수에 용이하며 코드가 직관적이다. 1. DB연결 : MongoDB, Reddis, Mysql 등에 맞는 코드를 Framework가 대신 동작하여 DB에 종속적이지 않도록 해준다2. DB와의 연결상태에 따른 코드를 Framework가 대신 동작하여 DB의 연결에 대한 관리를 대신해줌- DB와 최초 연결시 D..