<Spring 구현방안 검토>

Rest API는 http 프로토콜 위에서 Client가 Server를 호출해서 데이터를 받는 방식을 사용하기 쉽게 정리한 표준화된 방식으로 정리할 수 있을거 같습니다. (html문서가 아닌 다른 데이터도 조회,수정,삭제가 가능하도록 표준화한 방식)

이런방식으로 구현가능한게 @Controller + @ResponseBody로 하면 REST형태로 개발이 가능할 수 있는데, 이걸 하나로 합친것이 @RestController이다. (즉, @Controller + @ResponseBoy = @RestController)

  • 둘간의 차이(REST vs Controller)를 정리하면..... 위의 @Controller+@ResponseBody형태의 컨트롤러를 제외하고, 기존 Spring MVC구조의 @Controller에 국한해서 생각한다면, 컨트롤러의 리턴값이 ViewResolver에 의해서 해석되어서 특정뷰가 html응답으로 전송된다.

반면 @RestController에 의한 호출은 뷰를 리턴하는 것이 목적이 아닌, 데이터를 전송하는 목적으로 응답이 전송되어 진다.

화면을 전환하는 용도라면 Spring MVC구조를 사용하고, 데이터 전송용이라면 Rest로 구현해서 섞어서 쓰면 될것으로 보입니다. 단, 모니터링화면이나 채팅 같이 데이터전송이 자주 많이 되는 구조의 Web어플리케이션은, 데이터를 좀더 효율적으로 전송하려면, Rest API가 아닌 WebSocket을 이용하여 해당 부분의 데이터 송수신을 구현하는 것이 맞을 것 같습니다.

 

 

웹 애플리케이션과 REST API의 근본적인 차이점은 웹 애플리케이션의 응답은 일반적으로 사람이 보기위한 용도이기 때문에 (HTML + CSS + JavaScript) 를 응답으로 전송합니다. 
반면, REST API는 REST 대부분의 클라이언트가 프로그램이기 때문에 JSON 또는 XML 형식으로 데이터를 반환합니다.

The fundamental difference between a web application and a REST API is that the response from a web application 

is generally view (HTML + CSS + JavaScript)  because they are intended for human viewers while REST API just 

return data in form of JSON or XML because most of the REST clients are programs

'IT이야기' 카테고리의 다른 글

무료 비밀번호 관리앱 소개  (0) 2021.10.24
Eclipse Intellij 단축키  (0) 2016.08.26
/lib/ld-linux.so.2: bad ELF interpreter 에러 발생시  (0) 2016.08.24
VI 에디터 명령어  (0) 2016.08.17
AWS에서 Docker 설치  (0) 2016.07.14

[사전 필요 정보]

l  RDS사용 중인 DB 및 버전: MySQL 버전

l  사용중인 Region

l  모니터링 할 DB서버 댓수

 

[사전 준비 사항]

l  AWS 사용자 생성. (클라우드와치 모니터링 용) API사용 권한부여( Access key Secret Access Key 정보 제공 필요)

. CloudWatchFullAccess

. CloudWatchLogsFullAccess

. AmazonEC2ReadOnlyAccess

. AmazonRDSReadOnlyAccess

. AmazonRDSEnhancedMonitoringRole


l  모니터링할 DB 유저 생성 및 접근 권한 부여. (DB유저 및 Password 정보 제공 필요)

CREATE USER 'mfmuser' IDENTIFIED BY 'password';

GRANT SELECT ON performance_schema.* TO 'mfmuser'@'%'; // 성능정보 표시 용

GRANT SELECT ON mysql.* TO 'mfmuser'@'%'; // slow query 정보표시용(테이블로깅시)

GRANT REPLICATION CLIENT ON *.* TO 'mfmuser'@'%'; // replication client정보 표시용

GRANT PROCESS ON *.* TO 'mfmuser'@'%';  // processlist 정보표시 용

FLUSH PRIVILEGES; // 권한 정보 저장


l  Slow Query General Log 셋팅

. RDS DB파라미터 변경

slow_query_log = 1 //느린 쿼리 로깅 남기도록

long_query_time = 3 // 3초 이상 쿼리 로깅 필요 시, 시간은 고객사에 따라 지정

log_output = 'TABLE' // 테이블로 로깅정보를 남기도록, 10월 중 File 로깅 지원 예정.

0. Intellij에서 settings에 가서 Version Control에서 GitHub와 Git를 설정한다.



1. git 리모트 저장소 만들기

github계정에 repo를 만들고,(web에서)


rsa key쌍을 만들어서 github에 public key를 등록한다.

ssh-keygen

디렉토리를 지정하면 key쌍이 지정한 이름으로 생성된다.

즉, /c/Users/win/.ssh/id_rsa로 지정하면,

id_rsa개인키와

id_rsa.pub 공개키가 만들어지고


공개키의 내용 중 처음부터 xxx@xxx 빼고 복사해서 github의 키등록하는 곳에 등록해 둔다.

ssh-rsa APma7LYKjjDvBXLv3ZIZkC9QYE7S8sOTk4g4ZoYrONlREggqf2NpeEXoiYKb3auwTbGtwBHcueO37ESWSX5OVMQL7Ma3pXAOB0lh3ROwNGNkHaejaD119Wt8Y/CrsNHlOfioZO1MKNoYFxqaYio1DJjpSMEbrPu0ROVTcokDdGQR1T8pxOLKIA+5GI5CEjPyCJFQWHpvpLYwk59jMY/aYZEYHmlS7nPGXSem4ozt9ecl8qtv


git 설정을 한다. github 이메일로 설정한다.

git config --global user.name "Your Name Here"
git config --global user.email "your_email@youremail.com"
2. git 로컬저장소 만들기

create a new repository on the command line

echo "# study" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/omhtkhm/study.git
git push -u origin master
3. 현재 위치한 디렉토리를 git 저장소로 사용한다.
git init

이제 프로젝트가 거주할 온라인과 로컬 저장소를 모두 가졌다

로컬저장소 상태보기

git status

4. readme파일 만들고 로컬에 커밋하기

echo "# study" >> README.md
git add README.md
git commit -m "first commit"


5. 로컬 저장소와 깃허브 저장소 연결하기

리모트 저장소를 origin이라는 별칭으로 설정한다.
git remote add origin https://github.com/username/myproject.git

리모트 저장소 연결상태 보기

git remote -v

6. 리모트 push하기

git push -u origin master


7. Intellij에서 VCS > Git > Rebase.. 를 선택한다.

Rebase를 하고,

commit 및 push할 파일들을 선택해서 Ctrl+Alt+A 단축키로 git 커밋을 위해 Add한다.

마지막으로 Push하여 remote로 동기화 시킨다.


8. 기타

로컬 리포가 리모트 브랜치 트래킹 시키기

master브랜치 checkout 

git checkout master
로컬git 리포지터리의 브랜치가 리모트서버에 있는 master 브랜치를 트래킹하려면
git branch --set-upstream-to=origin/master

git branch --set-upstream master origin/master


로컬저장소의 내용을 리모트와 동기화

리모트의 마스터 브랜치로 부터 로컬저장소로 내리기

git pull origin master

로컬저장소의 내용을 리모트에 넣기

리모트의 마스터 브랜치로 로컬저장소 내용을 올리기

git push origin master

9. 한글문제

UTF-8 설정 (Window 환경에서만 해당됨)

git의 커밋 메시지의 기본 인코딩은 utf-8이다. 윈도우는 명령 프롬프트의 기본 인코딩이 cp949이므로, 커밋 메시지와 로그 메시지의 인코딩을 cp949로 변경해야 한다.

BASH
git config --global i18n.commitEncoding cp949
git config --global i18n.logOutputEncoding cp949

Atlasian의 SourceTree에서 gitbash를 이용해서 할때는 github push할 때, 한글 메시지가 잘되었다.

이 옵션도 설정해 본 뒤 결과를 확인해보자



------------------------



이번엔 github에 등록한 소스파일을 PC에 가져와서 작업하는 방법이다.


VCS > Chechout from Version Control > GitHub를 선택한다.


URL에 소스가 등록된 GITHUB URL을 입력하고, 

Parent directory 및 Directory Name에는 Github에서 가져와서 저장할 로컬 디렉토리를 지정한다.(없는 디렉토리여야 함)


Clone버튼을 클릭하면, 소스가 내려받아져서 git 리포지터리에 받아지고, Intellij 신규 프로젝트가 생성되어 개발이 가능한 상태가 된다.




'Java' 카테고리의 다른 글

[Linux] JDK설치 방법  (0) 2016.08.24

+ Recent posts