์์๊ทธ๋ฃน์ ์ฐ์ฐจ ๋ฐ ๋น์ง์ ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ์ ๋๋ค.
์ ์์ | ์ฅ์ง์ | ์ ์คํฌ |
ํด๋ผ์ด์ธํธ ํ์ด์ง ํ๋กํ ๊ด๋ฆฌ API ๊ฐ๋ฐ ํ์ผ ์ ๋ก๋ API ๊ฐ๋ฐ |
ํด๋ผ์ด์ธํธ ํ์ด์ง ํ์๊ฐ์ , ๋ก๊ทธ์ธ ๊ฐ๋ฐ ์ธ์ฆ/์ธ๊ฐ API ๊ฐ๋ฐ ์คํ๋ง ์ํ๋ฆฌํฐ ์ค์ |
ํด๋ผ์ด์ธํธ ํ์ด์ง ์ฐ์ฐจ/๋น์ง API ๊ฐ๋ฐ (์กฐํ, ๋ฑ๋ก, ์์ , ์ทจ์) |
๊ด๋ฆฌ์ ํ์ด์ง ์ง์ ๊ด๋ฆฌ API ๊ฐ๋ฐ ์ฐ์ฐจ, ๋น์ง API ๊ฐ๋ฐ |
์ค์ผ์ฅด๋ฌ ์ง๊ธ์ ๋ฐ๋ฅธ ์ฐ์ฐจ ์ง๊ธ ์ค์ผ์ฅด๋ฌ ๊ฐ๋ฐ |
AWS ์๋ฒ ์ค์ ์๋ฒ ๋ฐฐํฌ ์๋ฒ ๋๋ฉ์ธ ์ค์ |
-- ์ง๊ธ(์ฌ์, ๋๋ฆฌ, ๊ณผ์ฅ, ๋ถ์ฅ, ์ฐจ์ฅ, ์ ๋ฌด, ์๋ฌด, ์ฌ์ฅ ๋ฑ..)
CREATE TABLE position
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
type VARCHAR(50) NOT NULL UNIQUE,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ํ์ ์ํ(์
์ฌ, ํด์ฌ, ์ฌ์
์ฌ, ํด์ง, ์ก์ํด์ง, ๋ณต์ง ๋ฑ..)
CREATE TABLE status
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
type VARCHAR(20) NOT NULL UNIQUE,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ๋ถ์(๊ฐ๋ฐ, ๊ธฐํ, ์์
, ์ธ์ฌ, ํ๊ณ, ๋ฒ๋ฌด ๋ฑ..)
CREATE TABLE department
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
type VARCHAR(20) NOT NULL UNIQUE,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
-- ์ฐ์ฐจ(์ง๊ธ ๋ณ ์ง๊ธํ๋ ์ฐ์ฐจ์ ๊ฐ์)
CREATE TABLE day_off_by_position
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
position_id BIGINT NOT NULL UNIQUE,
amount TINYINT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
FOREIGN KEY (position_id) REFERENCES position (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ์ฐ์ฐจ(์ค์ ๋ฐ์ฐจ, ์คํ ๋ฐ์ฐจ, ์ฐ์ฐจ, ํน๋ณ ํด๊ฐ)
CREATE TABLE day_off
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
type VARCHAR(20) NOT NULL UNIQUE,
amount FLOAT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ํ์ ํ
์ด๋ธ ์์ฑ
CREATE TABLE employee
(
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
auth_token VARCHAR(36) NOT NULL COMMENT '์ธ์ฆ ํ ํฐ',
position_id BIGINT NOT NULL COMMENT '์ง๊ธ ID',
department_id BIGINT NOT NULL COMMENT '๋ถ์ ID',
status_id BIGINT NOT NULL COMMENT 'ํ์์ํ ID',
name VARCHAR(100) NOT NULL COMMENT '์ด๋ฆ',
email VARCHAR(100) NOT NULL UNIQUE COMMENT '์ด๋ฉ์ผ',
password CHAR(60) NOT NULL COLLATE ascii_bin COMMENT '๋น๋ฐ๋ฒํธ',
profile_image_path VARCHAR(255) COMMENT 'ํ๋กํ ์ด๋ฏธ์ง', -- ์ถ๊ฐ๋ ์นผ๋ผ
hire_date DATE NOT NULL COMMENT '์
์ฌ์ผ',
quit_date DATE COMMENT 'ํด์ฌ์ผ',
day_off_remains FLOAT NOT NULL COMMENT '์์ฌ ์ฐ์ฐจ์',
role VARCHAR(20) NOT NULL COMMENT '๊ถํ',
phone VARCHAR(60) NOT NULL COMMENT '์ ํ๋ฒํธ',
birthdate DATE COMMENT '์๋
์์ผ',
zip_address CHAR(5) COLLATE ascii_bin COMMENT '์ฐํธ๋ฒํธ',
road_address VARCHAR(255) COMMENT '์ฃผ์1(๋๋ก๋ช
)',
detail_address VARCHAR(255) COMMENT '์ฃผ์2(์์ธ์ฃผ์)',
created_at TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '์์ฑ์ผ',
updated_at TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '์์ ์ผ',
last_login_at TIMESTAMP DEFAULT NOW() COMMENT '์ต์ข
๋ก๊ทธ์ธ',
FOREIGN KEY (position_id) REFERENCES position (id), -- position ํ
์ด๋ธ์ id ์นผ๋ผ์ ์ฐธ์กฐ
FOREIGN KEY (department_id) REFERENCES department (id), -- department ํ
์ด๋ธ์ id ์นผ๋ผ์ ์ฐธ์กฐ
FOREIGN KEY (status_id) REFERENCES status (id) -- status ํ
์ด๋ธ์ id ์นผ๋ผ์ ์ฐธ์กฐ;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE position_history
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
employee_id BIGINT NOT NULL,
position_id BIGINT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
FOREIGN KEY (employee_id) REFERENCES employee (id),
FOREIGN KEY (position_id) REFERENCES position (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE department_history
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
employee_id BIGINT NOT NULL,
department_id BIGINT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
FOREIGN KEY (employee_id) REFERENCES employee (id),
FOREIGN KEY (department_id) REFERENCES department(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ํ์ ์ํ ์ด๋ ฅ ํ
์ด๋ธ ์์ฑ
CREATE TABLE status_history
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
employee_id BIGINT NOT NULL,
status_id BIGINT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
FOREIGN KEY (employee_id) REFERENCES employee (id),
FOREIGN KEY (status_id) REFERENCES status (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ์ฐ์ฐจ ๋ฑ๋ก์์ฒญ/์๋ต ์ด๋ ฅ
CREATE TABLE day_off_history
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
employee_id BIGINT NOT NULL,
day_off_id BIGINT NOT NULL,
status VARCHAR(20) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
total_amount FLOAT NOT NULL,
reason VARCHAR(100) NOT NULL, -- 100์ ์ด๋ด๋ก ์ฌ์ ๋ฅผ ์ธ ์ ์์
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
FOREIGN KEY (employee_id) REFERENCES employee (id),
FOREIGN KEY (day_off_id) REFERENCES day_off (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ๋น์ง ํ
์ด๋ธ ์์ฑ
CREATE TABLE duty_history
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
employee_id BIGINT NOT NULL,
status VARCHAR(20) NOT NULL,
date DATE NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
FOREIGN KEY (employee_id) REFERENCES employee (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE login_history (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
employee_id BIGINT NOT NULL,
client_ip VARCHAR(255),
user_agent VARCHAR(255),
created_at TIMESTAMP,
updated_at TIMESTAMP,
FOREIGN KEY (employee_id) REFERENCES employee (id)
);
์ด์ ๊ด๋ฆฌ
Git-flow ์ ๋ต
๋น๋
./gradlew clean build bootJar -x test
๋น๋๋ ์ฑ jar ์๋ฒ์ ์ ๋ฌ
scp -i {KEYํ์ผ} ./build/libs/*.jar {ํธ์คํธ๋ช
}@{ํธ์คํธ์์ดํผ}:{์ ์ฅ๊ฒฝ๋ก}/{jar ํ์ผ๋ช
}.jar
์ฑ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ฌด์ค๋จ ์คํ ๋ฐ ๋ก๊ทธ ์ ์ฅ
nohup java -jar {jar ํ์ผ๋ช
}.jar > {๋ก๊ทธ ํ์ผ ๊ฒฝ๋ก} &
์ฑ ๋ก๊ทธ ํ์ธ
tail -f -n 200 {๋ก๊ทธ ํ์ผ ๊ฒฝ๋ก}
์ฑ ํ๋ก์ธ์ค ์ข ๋ฃ
kill -9 $(ps -ef | grep {jar ํ์ผ๋ช
} | head -n 1 | cut -d ' ' -f 6)