user, product, stress 총 3 개의 어플리케이션이 있습니다. 제공된 binary는 x86기반 EC2의 Amazon Linux 2023 에서 빌드하고 동작을 확인하였습니다. go version은 go1.22.2 linux/amd64 입니다. 어플리케이션 실행 시 바인딩되는 포트는 TCP/8080 입니다. 모든 어플리케이션은 access log를 stdout, stderr로 출력합니다. 모든 어플리케이션은 변조 방지를 위해 Request 요청에 requestid, uuid 쿼리스트링이 추가됩니다. 정상적인 요청에 대해 Request 및 Response를 변조하여 불이익을 받지 않도록 합니다. 채점 시 사용되는 응답시간 및 코드는 모두 클라이언트 도착 기준입니다.

User App

최소한의 가용성을 위해 5초 이하의 응답시간을 보장하고자 하며, 0.2초 이하의 응답시간을 서비스 수준 목표로 설정

/v1/user POST 요청 시 email 주소의 포맷이 [email protected] 가 아닌 경우 403 에러가 발생하도록 구성

이는 어플리케이션 로직으로 구현되어 있지 않습니다.

이메일 정규식 : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$

path method request response_code
/v1/user POST {
"requestid":"999999999999",
"uuid":"7c5a3c6a-758f-4bc5-9bdf-3e573a0ad729",
"username":"dbdump500001",
"email":"[email protected]",
"status_message":"I’m happy",
} 201
/v1/user GET [email protected]
&requestid=999999999999
&uuid=7c5a3c6a-758f-4bc5-9bdf-3e573a0ad729 200
/healthcheck GET 200

ENV (RDS)

Database Table

CREATE TABLE user (
    id               VARCHAR(255)    NOT NULL,
    username         VARCHAR(255)    NOT NULL,
    email            VARCHAR(255)    NOT NULL,
    status_message   VARCHAR(255)    NOT NULL,
    PRIMARY KEY (userid),
    UNIQUE KEY uk_username (username)
);