728x90

1. nest project생성

# nest.js cli 설치
npm i -g @nestjs/cli

#프로젝트 생성
# 패키지 매니저 설정: npm 선택
nest new [프로젝트 폴더명]

 

2. 도커이미지 생성프로젝트 루트경로에 Dockerfile, .dickerignore 생성

a. 프로젝트 루트경로에 Dockerfile, .dickerignore 생성

# Dockerfile
FROM node:lts-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
# .dockerignore
node_modules
dist
.git
Dockerfile

 

b. 빌드 & 실행

# 프로젝트 루트경로에서
# 도커 이미지 생성
# dockerhub에 올릴꺼면 docker hub repo명과 도커이미지명이 같아야함
docker build -t [도커이미지 명] .

# 이미지 확인
docker images

# 로컬에서 이미지 실행
docker run -it -p [접속port]:[도커port] [도커이미지 명]

 

c. docker hub push

docker login --username=[dockerhub Id]
docker push [도커이미지 명]:[image version]

 

3. minikube + kubectl로 service띄우기

a. minikube 설치

# macOS
brew install minikube

# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

# Usages
minikube start

 

b. kubectl설치

  - mac : https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/

  - window : https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/

  - linux : https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ 

c. deployment.yaml파일 생성

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nest
  labels:
    app: nest
spec: # specification
  replicas: 2
  selector: 
    matchLabels:
      app: nest
  template:
    metadata:
      labels: 
        app: nest
    spec:
      containers:
      - name: nest
        image: [docker hub image명] # either from docker registries or other
        ports:
        - containerPort: 3000

 

 

b. service.yaml파일 생성

# depolyment.yaml파일 하나로 관리할거기 때문에 맨아래 --- 입력후 하단에 접속정보 추가
~~~
depolyment.yaml내용
~~~
---
apiVersion: v1
kind: Service
metadata:
  name: nest-service
spec:
  selector:
    app: nest
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000
      nodePort: 30000 # 30000~32000 포트범위 정해져 있음

 

e. eployment & service등록

# deplyment.yaml하나에 service 내용까지 작성했기 때문에 아래 명령어만 실행하면 service까지 등록됨
kubectl apply -f deployment.yaml

# deplyments 확인
kubectl get deplyments

# service 확인
minikube service list

# service 실행
minikube service [service명]

# minikube 대쉬보드 접속
minikube dashboard
728x90

DB replication이란?

DB replication 데이터베이스 시스템에서 사용되는 기술로, 마스터 데이터베이스(DB) 변경 내용을 하나 이상의 슬레이브(DB) 복제하는 과정을 말합니다.

이를 통해 데이터의 안정성, 가용성, 성능을 향상시킬 있습니다.

 

Master DB vs SlaveDB

1. Master DB

      • 마스터 디비는 데이터베이스 시스템에서 기본 데이터 저장소 역할을 합니다.
      • 읽기와 쓰기 작업에 대한 모든 데이터 변경 작업(INSERT, UPDATE, DELETE) 처리합니다.
      • 마스터 디비에 수행된 변경 작업은 슬레이브 디비에 자동으로 복제됩니다.
      • 데이터의 일관성과 무결성을 유지하는 중요한 역할을 수행합니다.

2. Slave DB

        • 슬레이브 디비는 마스터 디비의 복제본으로 작동합니다.
        • 주로 읽기 작업을 처리하는데 사용됩니다.
        • 마스터 디비에서 변경된 데이터를 주기적으로 가져와 슬레이브 디비를 업데이트합니다.
        • 슬레이브 디비는 읽기 작업을 처리하는 서버로 사용되어 응답 시간을 최적화하고 부하를 분산시킵니다.
        • 슬레이브 디비는 마스터 디비의 장애 발생 시에도 작동하여 데이터 손실을 최소화합니다.

mysql 설정

1. 마스터 디비 설정

# my.cnf 또는 my.ini 파일을 열어서 [mysqld] 섹션 아래 추가
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=database_name

여기서 database_name 복제할 데이터베이스의 이름입니다.

설정 후 mysql 재시작

2. 슬래이브 디비 설정

# my.cnf 또는 my.ini 파일을 열어서 [mysqld] 섹션 아래 추가
[mysqld]
server-id=2

3. 계정 생성 및 권한 부여

CREATE USER 'replication_user'@'slave_ip' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_ip';
FLUSH PRIVILEGES;

마스터 디비에 접속하고, 아래 쿼리를 실행하여 복제에 사용할 계정을 생성합니다:

4. 슬레이브 디비에서 복제 설정

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.XXXXXX', MASTER_LOG_POS=XXX;
START SLAVE;

슬레이브 디비에 접속하고, 아래 쿼리를 실행하여 복제를 설정합니다

mysql-bin.XXXXXX XXX 마스터 디비의 SHOW MASTER STATUS; 결과에서 확인할 있는 파일 이름과 위치입니다.

5. 복제상태 확인

슬레이브 디비에서 SHOW SLAVE STATUS; 쿼리를 실행하여 복제 상태를 확인할 있습니다.

Slave_IO_Running Slave_SQL_Running Yes 표시되어야 합니다.

 

다음 글에서는 설정한 replication을 spring boot에 적용 해보는 방법에 대해서 작성하겠습니다.

728x90

파이썬 pandas는 데이터 분석과 관련된 작업을 쉽게 처리할 수 있는 라이브러리입니다. 이번 글에서는 pandas의 주요 기능 중 하나인 데이터프레임(DataFrame)에 대해 알아보겠습니다.

 

데이터프레임(DataFrame)

데이터프레임은 엑셀과 유사한 형태의 2차원 자료구조입니다. 행과 열로 이루어져 있으며, 각 열은 서로 다른 데이터 타입을 가질 수 있습니다. 데이터프레임을 만들기 위해서는 리스트, 딕셔너리, 넘파이 배열 등 다양한 형태의 데이터를 활용할 수 있습니다.

 

데이터프레임 생성하기

아래는 딕셔너리를 이용하여 데이터프레임을 생성하는 방법입니다.

 

import pandas as pd

data = {'name': ['John', 'Mary', 'Peter', 'Jane'],
        'age': [28, 34, 29, 42],
        'city': ['Seoul', 'New York', 'Paris', 'London']}

df = pd.DataFrame(data)
print(df)

출력 결과는 다음과 같습니다.

    name  age      city
0   John   28     Seoul
1   Mary   34  New York
2  Peter   29     Paris
3   Jane   42    London

 

데이터프레임 인덱싱 및 슬라이싱

데이터프레임에서는 (column) (row) 각각 인덱싱할 있습니다. 열을 인덱싱하는 방법은 딕셔너리의 인덱싱 방법과 유사합니다.

 

print(df['name'])

# 출력결과
0     John
1     Mary
2    Peter
3     Jane
Name: name, dtype: object

 

행을 인덱싱하는 방법은 loc 메서드나 iloc 메서드를 사용합니다. loc 메서드는 행 인덱스를 기준으로 인덱싱하며, iloc 메서드는 행 번호를 기준으로 인덱싱합니다.

 
# loc 메서드를 사용하여 인덱싱하기
print(df.loc[0])  # 첫 번째 행을 출력합니다.

# iloc 메서드를 사용하여 인덱싱하기
print(df.iloc[0])  # 첫 번째 행을 출력합니다.

#출력결과-loc
name      John
age         28
city     Seoul
Name: 0, dtype: object

#출력결과-iloc
name      John
age         28
city     Seoul
Name: 0, dtype: object

 

아래 코드에서 iloc은 인덱스 번호를 사용하여 데이터프레임을 슬라이싱하며, loc은 열 이름을 사용하여 데이터프레임을 슬라이싱합니다.

iloc에서 [:, 1:3] 모든 (:)에서 1번째 열부터 3번째 (3번째 열은 포함되지 않음)까지 선택합니다.

loc에서 [:, 'name':'math'] 모든 (:)에서 'name'열부터 'math'열까지 선택합니다.

 

# 열 슬라이싱

# 인덱스를 사용하여 열 슬라이싱
df2 = df.iloc[:, 1:3] # 1번째 열부터 3번째 열(3번째 열은 포함되지 않음)까지 선택

# 열 이름을 사용하여 열 슬라이싱
df3 = df.loc[:, 'name':'math'] # 'name'열부터 'math'열까지 선택
728x90
  1. 주식 매수: 주식을 구매하는 것을 말합니다.
  2. 시장 가치: 회사의 시가총액에 따라 결정되는 회사의 가치입니다.
  3. EPS (주당순이익): 기업이 발행한 모든 주식에 대한 순이익을 나눈 값입니다. 높은 EPS 기업의 성장 가능성이 높음을 나타냅니다.
  4. PEG (주가 수익성 비율): 기업의 성장 가능성을 고려한 PER입니다. PEG 1보다 낮을수록 저평가된 기업이라는 것을 나타냅니다.
  5. 주식 배분: 다양한 기업의 주식을 소유하여, 투자 위험을 분산시키는 것을 말합니다.
  6. 주식 : 투자자들이 모여 자금을 조달하여, 해당 자금으로 주식을 매입하는 것을 말합니다.
  7. 배당 수익률: 주식을 소유한 투자자에게 기업이 주당 배당금으로 지급하는 수익을 나타내는 비율입니다.
  8. 주식 선물: 미래에 발생할 예상 주식 가격에 대한 계약을 말합니다.
  9. 마진 거래: 투자자가 보유하지 않은 자금으로 주식을 매입하는 것을 말합니다. 마진 거래는 수익을 가져올 있지만, 손실도 가져올 있습니다.
  10. 채권: 회사나 정부 등이 발행한 채무증서로, 채권을 구매하면 발행한 기관으로부터 이자를 받을 있습니다.

아래는 우리나라 주식시장인 코스피, 코스닥에 대한 기본 설명입니다.


코스피
(KOSPI) 코스닥(KOSDAQ) 대한민국의 개의 대표적인 주식 시장으로

코스피  대한민국 증권거래소에서 상장된 대기업들의 주식으로 이루어진 시장입니다대기업 중심으로 구성되어 있으며, 한국거래소(KRX)에서 운영됩니다.

 

반면 코스닥은 기술 중심의 중소형 기업들의 상장주식으로 이루어진 시장입니다. 기술과 창의적인 아이디어를 가진 기업들 중심으로 구성되어 있습니다. 기술 분야의 성장성이 높기 때문에, 미래 성장 가능성이 높은 기업들이 많이 상장하고 있습니다.

 

시장 모두 주식을 매수하고 판매할 있으며, 코스피와 코스닥 지수를 이용하여 시장의 변화와 흐름을 파악할 있습니다. 또한, 주식 투자를 하려는 입문자라면 먼저 코스피와 코스닥 시장을 파악하고, 어떤 종목들이 해당 시장에서 거래되는지, 주식 시장의 흐름을 파악하는 것이 중요합니다.

'주식' 카테고리의 다른 글

[주식용어] 1.생초보를 위한 주식 기초용어 정리  (0) 2023.04.06

+ Recent posts