Steady Mind For My Life

https://github.com/jongseok3910/Spring-Study

728x90
728x90

전자정부프레임워크&Spring Project 18

로드밸런싱과 DB이중화(altHost)

서비스 이관 작업이 막바지에 접어들면서 문서작업을 진행하던 중DB이관 업체로 부터 연락을 받았다. DB이중화가 안되어있다는 연락이었다.인프라가 바뀌면서 온갖 error와 bug를 해결하면서고생끝에 안정화 시켜놓은 후 한숨 돌리고 있었는데망치로 한대 얻어맞은 느낌이 들었다. AS-IS는 3tier에 WEB/WAS/DB가 각 1대씩 구성되어 있었고TO-BE는 3tier에 WEB/WAS/DB가 각 2대씩 이중화 되어있었다. 이중화 되어있었기에 이에따른 설정을 추가적으로 해줬어야 했고나는 DB설정 또한 이중화 해줬어야 한다. 그렇지 않으면 1번DB가 죽으면 그래서 서비스는 정지되기 때문이다. 이를 해결하면서 로드밸런싱과 vip, altHost라는 용어를 듣게 되었고이 용어들을 간략히 정리하면서 DB이중화 설정을..

db.properties 암호화

현재 프로젝트에서 신규서버로 서비스 이관을 진행하면서웹취약점 점검을 받게 되었다. 진단 결과 db연결 시 사용되는 db.properties에password가 그대로 노출되어 있으니 조치하라는 결과를 받았다. 그래서 db.properties에서 db연결 시 사용되는내용들을 암호화 해서 사용하기로 했다. 1. context_datasourse.xml  db.propertis에 암복화를 사용하려면 Jasypt 라이브러리를 사용해야 한다. pom.xml에 디펜던시 추가해서 Jasypt 라이브러리 설치하거나외부라이브러리 추가로 사용하면 된다.  나는 pom.xml이 아닌 Web Deployment Assembly에 설정되어있는 경로인WEB-INF/lib ..

Web서버 SSL설정

Tomcat서버에서 JBoss서버로 서비스를 이전하면서있었던 일이다. 나는 얼마전 Server.xml에 SSL 설정하는 글을 올린적이 있다.2024.10.30 - [전자정부프레임워크] - HTTPS통신과 SSL, 인증서(공개키,개인키) 현재 개발하고 있는 소스는 위 글처럼 server.xml에 SSL설정 되어있었고이를 토대로 JBoss서버에 SSL설정을 하려고 했다. 그런데 실제 AS-IS 서버의 SSL설정은 달랐다! AS-IS 서버를 살펴보니 server.xml에 SSL 설정이 없었고순간 멍~해졌다. ㅎ 알고보니 실제 운영서버는 WEB단에서 SSL설정을 해놓은 것이었다.예상과 다른 환경에 당황했지만 침착하게 SSL에 대해 검색하고 공부를 한 결과SSL설정은 두가지 방법이 있다는것을 알았다. 1. WAS..

JBOSS 핸들러 설정(톰캣의 Docbase)

현재 프로젝트의 막바지에 접어들면서Tomcat서버에서 운영 중이던 서비스를JBoss서버에 서비스를 이전시키고 왔다. 일주일 동안 전주에 머물면서 이전작업을 했고이 과정에서 많은 어려움이 있었지만시간을 갈아 넣어서 결국 완벽히 서비스 이전을 시켰다. JBoss로 서비스 이전 작업 중 생겼던 이슈를 하나씩 소개하고자 한다. 1. Tomcat.xml의 docbase 설정현재 서비스에 파일업로드 기능이 있고업로드 위치는 루트 경로에 /DATA/data 폴더로 잡혀있었다. 그리고 업로드된 pdf파일을 미리 보기 하는 페이지가 있는데미리 보기가 제대로 동작하지 않았다. jsp파일의 소스를 보니 이런 식으로 되어있었다. '업로드 폴더 경로는 /DATA/data인데jsp소스는 /upload로 경로가 잡혀있으면 이상한데..

Spring프로젝트 Jboss 변경 오류 해결

이번 프로젝트의 가장 중요한 일은새롭게 바뀌는 인프라에 맞게 기존 서비스를 옮기는 것이다. 1. DB를 티베로 -> 큐브리드로 마이그레이션2. Tomcat -> Jboss 변경 지금껏 일을 해오면서 코드나 쿼리만 작성해 봤지서버 설정을 해본 적이 없었다. 그래서 그런지 서버가 바뀌더라도'war파일만 옮겨서 서버를 기동시 키면 되겠지'라는 안일한 생각을 했고, 그 결과 아주 고생을 했다. ㅎ 서비스에 맞게 Jboss 설정파일도 재설정해야 했고처음 보는 에러들이 발생하면서 서버자체가 올라가지도않았다. ㅋ 지금이야 웃으면서 말할 수 있지만에러를 해결하는 과정에서는 스트레스가 정말 심했다. ㅠ Spring프로젝트를 Jboss서버에 올리면서 발생했던 오류들과 해결과정을 정리하고자 한다. 1. Substring에러..

Promise로 로딩화면 띄우기(동기, 비동기 요청)

현재 프로젝트 유지보수 중 담당자로부터그리드의 데이터를 불러오는 동안 로딩화면이 보이도록수정해달라는 요청을 받았다. 처음에는 간단한 요구사항이라 생각했고소스코드에 그리드 데이터를 불러오는 함수 전에제이쿼리로 loading화면이 있는 div의 id를 잡아display='block' 처리를 하고 데이터를 다 불러오면 display='none'하도록로직을 수정했다. function init (){ $('#loading').css('display', 'block'); excelView();//그리드 데이터 호출 $('#loading').css('display', 'none');}excelView = function(){ $.ajax({ async : fals..

HTTPS통신과 SSL, 인증서(공개키,개인키)

현재 프로젝트의 개발/수정 작업이 거의 다 끝나면서새로 설치된 WEB/WAS서버에 기존 서비스를 옮겨서Cubrid와 연결하여 서비스가 정상 작동하는지 확인하는마지막 작업만 남게되었다. 새로운 WEB/WAS는 apache/Jboss로 구성되어 있기에서버기동 명령어도 다를 수 있고, 새롭게 구성된 인프라기 때문에아이피나 포트도 다를 수 있다. 그래서 서비스를 옮기고 server.xml 등 설정파일을 수정해야 하기 때문에기존 서비스의 설정 파일들을 확인하고 있었다. 그러던 중 server.xml파일의 SSL설정 부분을 발견했다. 지금까지는 이미 구성완료 된 인프라와 세팅완료된 환경에서개발코드만 작성해 왔기에 server설정에 대해 자세히 본 적이 없었다. SSL이라는 게 있다는 것만 알았지 자세한 동작원리를 ..

스프링 시큐리티 - 로그인

현재 프로젝트에서 OTP인증, 중복로그인 방지 로직을 구현했다.구현하는 과정에서 갈피를 못잡고 가장 해맸던 부분이 바로스프링 시큐리티를 사용한 로그인이었다. 이전 회사에서는 자체 개발한 툴로 개발을 했었기에스프링 시큐리티가 적용된 로그인 로직을 본적이 없었다. 내가 가지고 있던 상식선에서는 로그인 버튼을 누르면API를 호출하고 API URL에 매핑되어 있는 경로를 따라가면컨트롤, 서비스, 화면이 나와야 하는데 스프링 시큐리티를 사용한 로그인 화면에서는아무리 찾아봐도 관련 컨트롤러, 서비스 소스를 찾을 수 없었다. 소스코드를 분석 한 결과 스프링 시큐리티는 로그인은동작 방법이 다르다는 것을 깨닳았고 분석한 내용을 정리하고자 한다. 1. Context-security.xml 설정스프링 시큐리티의 로그인을 사..

DB마이그레이션(Tibero -> Cubrid)

현재 프로젝트에서 조만간 DB마이그레이션이 진행된다.Tibero에서 Cubrid로 변경되는데이렇게 되면 내가 그동안 개발/수정해온 코드들이 정상동작을 안 할 수도 있기에 직접 개발서버에서 Cubrid를 설치 마이그레이션을진행했다. 마이그레이션을 진행하면서 현재 소스가 Cubrid에서 정상동작할지 파악하기 위해 분석을 진행했고 아래와 같이 유의사항들을 정리했다. 1. Procedure/Function 여부11 버전 기준 큐브리드는 procedure를 지원하지 않는다.현재 소스에서는 procedure를 사용한 코드들이 있는데이를 자바코드로 변환해서 정상 동작하도록 수정했다. 2. 데이터타입 비교DB별로 데이터타입이 다를 수도 있기 때문에 Tibero와 Cubrid간의 데이터타입을 비교해 봤다. 위 정리한..

Session만료 시 메시지 띄우기

현재 진행되고 있는 프로젝트에서 미사용시 Session 아웃되는시간을 늘리고 로그아웃 될때 메시지를 띄우는 로직을 추가하게 되었다. 현재 프로젝트를 살펴보니 Spring Security를 사용하고 있었고세션만료 시 저절로 로그아웃 되고 있었다. 그래서 아래와 같이web.xml, context-security.xml을 수정해서구현했더니 문제가 하나 발생했다. 로그인 하지 않은 상태에서도 특정시간이 지나면로그인화면으로 이동하면서 alert창이 뜨는것이었다. 로그인하지 않아도 홈페이지에 접속하는 순간Session은 생성되기 때문에 자꾸 로그인페이지로이동되는것이었다. 실패한 세션만료 alert 구현1. web.xml 수정 web.xml을 살펴보면 부분에세션만료시간을 설정하는 부분이 있다. 기존 60에서 120으..

728x90
728x90