DBMS 무료 툴인 DBeaver은 효율적이고 ssh 적용이 가능하다.

 

Tool 설치

  • https://dbeaver.io/download/
    • 환경에 맞는 파일을 다운로드 한다.
    • windows installer로 설치
    • 설치 안내 마법사: 다음 클릭 -> 사용권 계약 확인: 동의함 클릭 -> 다음클릭 -> 구성 요소 선택: DBeaver Community, include java 선택 후 다음클릭 -> 설치 위치 선택: 다음클릭 -> 설치 클릭 -> 설치 완료

데이터베이스 연결

  • PostgreSQL과 연동하기

1. 데이터베이스 클릭 > 새 데이터베이스 연결 클릭

 

2. 연결하고자하는 DB 클릭

 

3. 데이터베이스 정보 입력

  • Host와 port 입력: postgreSQL이므로 5432
  • Database는 작성하지 않아도 됨
  • username과 password 입력

 

4. 연동 완료

'Language & OS > DB' 카테고리의 다른 글

minio  (0) 2024.02.22
SQL과 NoSQL의 차이  (0) 2023.01.13
[DB] docker container를 활용해 MongoDB에 데이터 입력하기  (0) 2022.11.22
[DB] mongoDB 기본 개념  (1) 2022.11.18

 

systemd(system daemon)은초기화 및 시스템 관리 시스템이다. 시스템 부팅 및 종료 프로세스를 관리함

systemctl은 systemd를 사용하는 명령어 

 

# 현재 상태 확인하기
sudo systemctl status

 

 

참고: https://ubuntu2304.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EB%A7%88%EC%8A%A4%ED%84%B01%EA%B8%89-systemd-%EC%9D%98-%EA%B0%9C%EC%9A%94-%EB%B0%8F-systemctl-%EB%AA%85%EB%A0%B9

RPA란?

가상으로 실행되는 소프트웨어 로봇으로 데이터 수집, 전송, 입력, 트랜잭션 프로세스, 서버 내 파일 관리 등 표준화되고 반복적인 디지털 업무 환경 작업을 자동화하는 것

  • CAP: 다양한 기술(머신러닝, 데이터 마이닝, 자연어 처리 등)을 기반으로 하며 모든 형식의 비정형 데이터를 처리하고 정형 데이터로 변환할 수 있는 기능을 갖추고 있음
  • UTMS: 봇을 통해 활성화되며 노동 집약적인 작업을 자동화하여 생산성과 효율성을 높임. 또한 RPA 구성에 필요한 로봇 스크립트를 생성

RPA 도입배경 : 부수적인 관리 업무에 많은 시간을 쏟는 한국

사무직 업무에 30~50%는 단순반복 작업이라고 한다. 이메일 관리, 엑셀 업무, 시스템 로그인, 데이터 추출 및 입력, 보고서 출력 등 반복 처리만 하면 되는 일에 업무 시간의 절반가량을 쏟고 있는 셈이다. 그 중에서도 한국은 기업 근로자가 부수적인 업무에 많은 시간을 쏟는 나라로 꼽힌다. 글로벌 RPA 기업 오토메이션 애니웨어가 2019년에 조사한 바에 따르면 한국은 멕시코(3.77시간), 브라질(3.71시간)에 이어 부수적인 관리 업무에 근로자가 쓰는 일 평균 소요 시간(3.58시간)이 세 번째로 많은 나라였다.


RPA 장점

  1. 비용 절감. RPA를 구현함으로써 기업은 모든 수동 또는 반복 작업을 자동화할 수 있습니다. RPA 도구는 FTE를 줄이고 직원들이 더 가치 있는 업무에 집중할 수 있게 해줍니다.
  2. 생산성 향상. 스마트 로봇은 쉬지 않고 일할 수 있습니다. 가장 효율적인 방식으로 작업하도록 프로그래밍되어 있으므로 휴식이나 휴가를 가질 필요가 없습니다.
  3. 정확성. 자동화된 작업을 로봇화하면 사람의 실수 여지를 없앨 수 있습니다. 로봇은 무한한 집중력을 가지고 있으며 실수를 하지 않습니다. 로봇이 규칙이나 매개변수에 맞지 않는 트랜잭션을 발견하면 인간 작업자에게 알림을 보냅니다.
  4. 확장성. RPA는 필요에 따라 확장할 수 있습니다. 처리 용량을 늘려야 하는 경우 더 많은 수의 로봇을 할당하기만 하면 됩니다. 많은 비용을 들이지 않고도 쉽게 수행할 수 있습니다.
  5. 단순성. RPA는 기본적으로 코드가 필요 없는 솔루션이므로 봇을 구성하는 데 프로그래밍 기술이 필요하지 않습니다.
  6. 데이터 분석. RPA는 대량의 데이터를 처리하고 주요 KPI 분석을 수행하도록 설계되었습니다. 데이터는 시스템을 지속적으로 개선하고 실시간으로 가치 있는 인사이트를 생성하는 데 사용됩니다.
  7. 속도와 효율성 향상. 로봇은 사람보다 빠르게 작업하며 연중무휴 24시간 사용할 수 있습니다. 비즈니스 프로세스를 더욱 효율적으로 만들어줍니다.
  8. 적응성과 유연성. 비즈니스의 특정 요구 사항에 따라 RPA 도구를 사용자 지정하고 추가 기능을 포함할 수 있습니다.
  9. 다목적성. RPA는 다양한 부문과 시장에서 활용될 수 있습니다.
  10. 규제 준수 강화. 자동화 도구는 절차를 모니터링하고 오류를 제거하며 데이터를 기록합니다.
  11.  나은 품질의 서비스. 로봇은 사람의 실수를 제거하고, 프로세스를 개선하며, 데이터를 수집 및 분석하여 기업이 서비스 품질을 개선할 수 있는 개선 영역을 찾는 데 도움을 줍니다.
  12. 직원 만족도 향상. 직원들은 더 가치 있고 창의적인 업무에 집중할 수 있습니다. 더 이상 반복적인 일상 업무에 몇 시간을 소비할 필요가 없습니다. 따라서 만족도와 생산성이 높아집니다.
  13. 시간 최적화. 기업은 작업과 활동을 더 빠르게 수행할 수 있고 RPA는 새로운 비즈니스 프로세스에 빠르게 적응할 수 있습니다.
  14. 비침습적 기술. RPA는 여러 애플리케이션에 통합하는 데 많은 리소스가 필요하지 않습니다. 기존 IT 시스템을 교체할 필요가 없습니다. 회사 내 여러 부서의 IT 시스템에 쉽게 적용할 수 있습니다.
  15. 고객 서비스 개선. 로봇은 연중무휴 24시간 이용 가능하며 고객 문의를 더 빠르게 해결할 수 있어 서비스 품질과 전반적인 고객 만족도가 향상됩니다.

RPA 적용

참고:

https://botpress.com/ko/blog/what-is-rpa-in-automation

https://www.echoit.co.kr/rpa/rpa.html

 

 

 

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.12/README.venv for more information.

pip install ipython을 하려고 하니까 위와 같은 에러가 나왔다.  아래 코드를 시도해보고 안되면 아래 순서대로 하기

sudo apt install ipython3

 

 

1. 가상환경에서 ipython을 설치해줬다.

python3 -m venv .venv
sudo apt install python3.12-venv  (생략해도 됨)

2. 가상환경을 활성화 해준 후 다운 받고 가상환경에서 빠져나오기

source .venv/bin/activate
python3 -m pip install ipython
 deactivate

3. 작동되는지 확인

ipython 
ipython3

Ray란?

  • 버클리 대학 RISE 연구실에서 만들었다
  • 분산 어플리케이션을 만들기 위해 단순하고 범용적인 API를 제공하는 라이브러리
  • 확장 가능한 고성능 분산/병렬 머신러닝 프레임워크
  • 다수의 분산 머신러닝 라이브러리를 보강한다
  • 최소화한 구문 때문에 기존 앱의 많은 부분을 재작업하지 않고도 병렬화가 가능하다. 기존의 코드 변경을 하지 않고 기존의 순차 코드 베이스에서 몇줄의 코드만 추가하여 병렬 처리를 쉽게할 수 있다.
  • 필요에 따라 로컬 하드웨어, 주요 클라우드 컴퓨팅 플랫폼에서 자동으로 노드를 가동할 수 있는 자체 클러스터 관리자도 내장돼 있다.

Ray 서밋 내용:

  • Ray로 게놈 데이터 분석하기 프로젝트
  • 빅데이터 로딩 & 전처리하는 기능이 있다.
  • MLSQL, Spark, Ray 같이 사용하는 방법이 있다 (빅데이터 & AI)

Ray의 분산/병렬 시스템 Ray Core의 장점:

  1. 다수의 컴퓨터에서 동일한 코드를 실행시킬 수 있다.
  2. State of the Art하고 통신 가능한 Microservice 및 Actor를 구축할 수 있다.
  3. 기계 고장 및 시스템 고장을 훌륭하게 처리할 수 있다.
  4.  거대한 데이터와 수치 데이터를 효율적으로 처리할 수 있다.

Ray의 성능:

벤치마크 결과에 따르면 Core의 수가 증가함에 따라서 압도적으로 성능이 향상하는 것을 볼 수 있다. 이 성능 차이는 프로세스간의 객체 전달을 위한 과정에서 발생한다. 또한 48물리 코어를 가지는 환경에서 Ray가 Multiprocessing보다 9배 빠르고, 싱글스레드 환경보다 28배 빠르다.

 

Python Multiprocessing: 

  • 큰 데이터를 다른 프로세스에 전달할때... pickle사용 → 직렬화 → 전달
  • 단점: 모든 프로세스가 데이터에 대한 복사본을 만들어야 한다 → 큰 메모리를 할당한다 → 역직렬화에서 발생하는 큰 오버헤드를 가질 수 밖에 없다.

Ray:

Python Multiprocessing의 문제를 해결하기 위해… 직렬화 오버헤드가 적은 Apache Arrow를 사용한다 → Zero-Copy 직렬화를 수행한다 → 직렬화된 데이터를 In-Memory Object Store인 Plasma를 이용하여 빠르게 공유한다.

 

Ray Core API 정리:



퍼널 분석(Funnel Analysis)

  • 고객들이 우리가 설계한 유저 경험 루트를 따라 잘 도착하고 있는지 확인해보기 위해 최초 유입부터 최종 목적지까지 단계를 나누어서 살펴보는 분석 기법
  • 앱 스토어 페이지 뷰가 있으면 설치하고 실행하고 가입하고 가입 완료하기 까지의 과정을 잘 따라오고 있는지 분석하는 것. 
  • 각 단계를 넘어가는 것을 전환이라고 부르고 그 비율을 전환율이라고 한다! 
  • 퍼널의 단계를 줄이는게 단계별 이탈하는 유저를 줄이고 전환율을 올릴 수 있음. -> 카카오 계정으로 시작하기 등 
  • 불필요한 단계가 있진 않은지, 전환율이 떨어지는 구간이 있지 않은지, 유입량 자체가 너무 적지 않은지 확인해봐야함

 

리텐션 분석(Retention Analysis)

  • 얼마나 많은 유저가 제품으로 다시 돌아오는지 측정하는 것
  • 0일차에 처음으로 제품을 사용한 유저 중 N일 후 재방문하여 활성화된 유저의 비율이 N일차의 리텐션이 된다. (0일차: 일반적으로 신규 유저가 제품을 처음으로 사용한 날을 의미)
  •  
    리텐션 커브 예시
     
  • 리텐션은 PMF(Product Market Fit) 달성 여부를 판단하는 기준이다.
  • 시간이 지남에 따라 리텐션 커브가 0을 향해 감소하는 직선의 형태라면 근본적으로 PMF 에 문제가 있는 것이다.
  • 반면 초기에 리텐션 커브는 급감했지만 위의 그래프처럼 25% 선에서 안정화되고 있다면 PMF 를 달성했다고 볼 수 있다
  • 리텐션이 중요한 이유
    • 아무리 마케팅을 통해 신규 유저 유입을 늘려봤자 리텐션이 낮으면 아무 소용이 없음.
    • 평균적으로 80%의 신규 유저는 앱 다운로드 3일 후부터 더 이상 앱을 사용하지 않는다고 함.

 

코호트 분석(Cohort Analysis)

  • 특정 기간 동안 공통된 특성이나 경험을 갖는 사용자 집단
  • 첫방문 ,캠페인 유입등 특정 조건에 해당되는 사용자들을 그룹화하고 시간 흐름에 따른 행동 패턴을 추적
  • 코호트가 중요한 이유
    • 고객 유지율(Retention Rate) 분석: 고객의 이탈 시점을 분석하는데 있어 탁월한 분석 지표임
    • 특정 고객 집단의 인사이트 발견: 방문/ 구매/ 유입/ 광고 등의 세그먼트 조건을 조합해 특정 고객군을 선정하고 분석 할 수 있음
  • 코호트 분석을 통해 얻을 수 있는 인사이트
    • 고객 유지율, 고객 이탈율
    • PC웹/ 모바일 웹/ 하이브리드 앱 사용자 유지율
    • 시간 경과에 따른 마케팅 캠페인 효과 분석
    • 신규 회원가입자의 유지율
    • 유입 출처에 따른 고객 가치

 

 

참고: https://problem-solving.tistory.com/24

설명

  • 오픈 소스로 제공되는 분산 스토리지 솔루션
  • 파일이나 블록 스토리지를 지원하지 않고 오브젝트 스토리지 형태로 제공되며 Amazon S3 클라우드 스토리지 서비스와 완벽하게 호환되기 때문에 AWS S3 SDK를 사용할 수 있음.
  • 파일에 대한 직접적인 수정은 불가능하며 항상 덮어쓰는 overwrite 방식이 사용됨
  • S3 스토리지로 마이그레이션 하더라도 애플리케이션 코드를 수정할 필요가 없음
  • 노드 연결을 통한 용량 확장 가능
  • 파이썬에서 boto, minio 등의 s3호환 라이브러리를 사용하여 코드에서 직접 파일에 접근 가능

 

  • 데이터 중복 수준을 설정할 수 있고, 설정된 중복 수준으로 데이터 및 패리티 블록으로 분산 저장한다.
  • web UI를 제공해서 편리하게 관리할 수 있다.
  • 고가용성이다. 스토리지 클러스터를 구축하여 데이터의 용량과 처리 능력을 확장하고 데이터를 분산하여 저장 및 복제한다.
  • kubernetes 환경에서 손쉽게 설치가 가능함
  • 전송 중인 데이터를 암호화하거나 데이터를 암호화하여 보관할 수 있다.

 

Minio를 사용하게 된 목적은 서버와 user마다 경로를 수정(상대경로)해야하는 불편함을 개선하고자 사용했다. 

Minio로 절대경로를 사용함으로써 모든 서버와 user에서 동일한 경로에서 진행이 가능해 훨씬 편리해졌다. 또한 데이터 전처리 및 분석으로 발생하는 데이터를 로컬에 저장하여 DB에 따로 저장해야하는 번거로움을 없애고 바로 minio에 업로드하여 처리 시간을 줄일 수 있었다. 

 

구축

  • 설치: 독립환경을 위해 docker 사용

1. docker-compse.yml 파일 작성

  •  다중 디스크 사용 (권장 사항: 데이터 안정성 및 속도를 위해 디스크 4개 사용
  • version: '3'
    services:
      minio:
        image: quay.io/minio/minio:latest
        command: server /data{1...4} --console-address ":9001"
        container_name: minio
        environment:
          MINIO_ROOT_USER: 사용자 지정
          MINIO_ROOT_PASSWORD: 사용자 지정
          MINIO_PROMETHEUS_JOB_ID: minio-job
          MINIO_PROMETHEUS_URL: "http://~~~~~~~~"
          CONSOLE_DEV_MODE: "on"
        restart: always
        #shm_size: '1gb'  # default는 64MB
        ports:
          - "9002:9000"    # minio 서비스 포트
          - "9001:9001"    # minio 콘솔 포트
        volumes: 
         - /mnt/bay0/minio_disk1:/data1  # 버킷 데이터 저장소 위치
          - /mnt/bay1/minio_disk2:/data2  # hdd2
          - /mnt/bay2/minio_disk3:/data3  # hdd3
          - /mnt/bay3/minio_disk4:/data4  # hdd4
          - ./minio:/root/.minio # 컨테이너 실행 데이터 위치

2. 컨테이너 실행

docker-compose up -d​

 

3. web UI 접속

  • http://localhost:9001로 접속하면 아래와 같이 웹 화면을 확인 가능 (접속 계정은 docker-compose.yaml 파일에 기재한 정보로 로그인)
  • 1. 내부용 TLS 자체서명 인증서 생성
    • https://github.com/minio/certgen/releases/ 설치 후 인증서 생성=>(certgen -host "127.0.0.1, localhost")
    • 생성된 두개의 파일을 minio의 실행데이터폴더의 cert 폴더에 저장(구현한 서버 환경에서는 /home/keti/docker/minio/minio/certs/ 경로로 두개파일 저장)
    • 파일 저장후,  도커 컨테이너 다시 시작 및 적용 
  • 적용 후 서버에서 http://localhost:9001 접속 or 포트포워딩 후, 웹 url 접속
  • 버킷 생성 - 좌측 메뉴에서 Buckets 클릭, 우측 상다 create bucket 클릭
  • 버킷 이름과 추가 설정 후 버킷 생성
  • 사용자 생성 - 좌측 메뉴에서 Identity -> user 이름과 비밀번호, 기타 권한 옵션 설정 후 유저 생성
  • 접근키 생성- 좌측 메뉴에서 Access Keys (코드에서 버킷에 저장된 파일 다운로드/업로드, minio간의 동기화에 사용됨)
  • 자동으로 생성된 Access key와 Secrete key 메모장에 복사 후 저장 및 관리
  • 버킷별 정책생성(삭제주기등등)
    • 별도의 클라이언트를 통하여 파일 접근가능
    • cyberduck(https://cyberduck.io/)
    • 다양한 프로토콜 지원(ftp, s3, nextcloud 등등), 필요시 사용

'Language & OS > DB' 카테고리의 다른 글

DBeaver 설치 및 사용방법  (0) 2024.05.20
SQL과 NoSQL의 차이  (0) 2023.01.13
[DB] docker container를 활용해 MongoDB에 데이터 입력하기  (0) 2022.11.22
[DB] mongoDB 기본 개념  (1) 2022.11.18

 

from collections import Counter

def solution(v):
    ans = []
    v1 = sum(v,[])
    v_x = v1[0::2]
    v_y = v1[1::2]

    counts_x = Counter(v_x)
    for element, value in counts_x.items():
        if value%2 != 0:
            ans.append(element)

    counts_y = Counter(v_y)
    for element, value in counts_y.items():
        if value%2 != 0:
            ans.append(element)
            
    return ans

실무하면서 로컬에서 파일을 복사하려면 cp를 사용했으나, 로컬에서 서버, 서버에서 서버, 서버에서 로컬로 파일을 복사할 때는 rsync를 많이 사용했었다. 오랜만에 하려고 하니까 매일 쓰던 것도 기억이 가물가물해서 메모해 두려고 한다!

 

rsync 명령어
  • 원격 또는 로컬 간에 파일이나 디렉토리를 복사하는 리눅스의 기본 내장 명령어
  • 로컬 to 로컬, 서버 to 서버, 로컬 to 서버, 서버 to 로컬 다 가능!
# < 원격에 디렉토리 복사>
# rsync [User]@[IP Address]:[File Name] [Path1:가져올 위치] [path2: 저장할 위치]

rsync -avzhP test-directory twpower@192.168.1.2:/home/s~~ ./


# 디렉토리 내 파일들과 하위 디렉토리들 복사
# rsync [Directory Name]/ [User]@[IP Address]:[Path]

rsync -avzhP test-directory/ twpower-private-server:~
rsync -avzhP test-directory/ twpower@192.168.1.2:~


# 원격에 있는 파일 로컬로 가져오기
# rsync [User]@[IP Address]:[File Name] [Path]

rsync -avzhP twpower-private-server:~/test.txt .
rsync -avzhP twpower@192.168.1.2:~/test.txt .

# 전송시 파일명 변경도 가능

rsync -avzhP twpower-private-server:~/test.txt ./test-renamed.txt
rsync -avzhP twpower@192.168.1.2:~test.txt ./test-renamed.txt

# 원격에 있는 디렉토리 로컬로 가져오기
# rsync [User]@[IP Address]:[Directory Name] [Path]
# 디렉토리 자체가 복사된다.

rsync -avzhP twpower-private-server:~/test-directory .
rsync -avzhP twpower@192.168.1.2:~/test-directory .


# 디렉토리 내 파일들과 하위 디렉토리들 복사
# rsync [User]@[IP Address]:[Directory Name]/ [Path]

rsync -avzhP twpower-private-server:~/test-directory/ .
rsync -avzhP twpower@192.168.1.2:~/test-directory/ .

# 만약 포트가 포함되어 있을 경우(기존 원격에서 쓰던 폴더명 그대로 사용하고 싶을 경우, 현재있는 디렉토리에 폴더명과 파일 그대로 생성)
# rsync -e 'ssh -p [포트번호]' -avzh [User]@[IP Address]:[Directory Name]/ [Path]

 rsync -e 'ssh -p 8888' -avzh srjung@bigsoft.iptime.org:/home/srjung/Fun-DataAnalysis ./

CI/CD란?

CI = 지속적인 통합(Continuous Integration); 한마디로 “빌드와 테스트 자동화” 

CD = 지속적인 전달(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment); 한마디로 “배포 자동화” 

 

덧붙이자면 CI는 모든 개발이 끝난 후 코드 품질을 관리하는 고전적 방식의 단점을 해소하기 위해 나타난 개념으로, “지속적인 통합(Continuous Integration)”이라는 말 그대로 코드 변경 사항이 정기적으로 빌드 및 테스트되어 (가능하면 매시간 또는 매일) 공유 리포지토리에 통합되는 과정을 통해 계속 품질을 유지하면서 개발을 진행하는 방법이다. 

 

CD는 CI의 연장선으로, 이 CI 프로세스를 통과한 코드 버전을 마지막에 “배포”하는 과정을 말한다. 코드 변경 사항이 파이프라인의 이전 단계(CI)를 모두 성공적으로 통과하면 수동 개입 없이 프로덕션에 자동으로 배포됨으로, 신속하고 능률적으로 사용자에게 새로운 기능을 제공할 수 있는 것이 장점이다. 

 

+ Recent posts