2024. 11. 12. 08:01ㆍ프로젝트: Co Laobr
기존 생각해둔 알고리즘은 다음과 같다.
알고리즘
- 데이터 수집 및 전처리
- 법률 문서, 판례 등 데이터 수집
- 특수 문자, 불필요한 공백 등 제거
- 텍스트 정규화
- KoNLPy을 통해 텍스트 토큰화
- 불용어 처리
- Elasticsearch 구축
- Elasticsearch 클러스터 설정
- 한국어 분석기 nori를 통해 법률 데이터를 색인화하여 Elasticsearch에 저장
- KoBERT 모델 다운로드 및 설정
- 성능이 잘 안나온다면 법률 도메인 데이터로 파인튜닝
- RAG 파이프라인 구현
- Retrieval : 사용자 질문을 KoBERT로 임베딩하여 검색
- 검색된 문서와 원래 질문을 결합하여 LLM input으로 사용
그런데 엘라스틱 서치를 생각해보면 inverted index로 이루어져 있다. 그렇다면 왼쪽에 term을 기준으로 오른쪽에 posting이 달리게 될텐데 term이 어느 posting에 있는지 정보가 필요하므로 텍스트를 토큰화해서 넘겨줄 필요가 없다.
KoNLPy를 사용한다면 법률 데이터를 분석한 후 핵심 키워드를 분석하고 추출하여 inverted index의 keyword 필드에 넘겨주는 방식으로 좀 더 RAG에 도움이 될 순 있겠지만 구현해봐야 성능적으로 더 도움이 되는지 알 수 있을 것 같았다.
게다가, 엘라스틱 서치의 토크나이저를 통해 토큰화시키고 nori를 통해 색인화한다면 전처리를 하지 않아도 충분한 효율이 나타날 것이라 생각하여 전처리 과정은 과감하게 제거했다. 특히 nori에서도 형태소 분석, 불용어 처리가 가능해서 KoNLPy는 사용하지 않는 것으로 바꾸었다.
1. 데이터 수집
수집해야할 데이터는 외국인 근로자와 연관된 법률의 모든 정보이다.
일단 엘라스틱서치에서 document를 어떻게 다루는지 알아보자.
엘라스틱서치에서는 document 별 고유한 URL을 갖는다. document에 접근하는 URL의 형태는 다음과 같다.
http://<호스트>:<포트>/<인덱스>/_doc/<도큐먼트 id>
문서의 삽입은 PUT 메서드를 사용하여
PUT my_index/_doc/1
{
"name":"Jongmin Kim",
"message":"안녕하세요 Elasticsearch"
}
이런식으로 이루어지고 CRUD를 모두 지원한다.
https://esbook.kimjmin.net/04-data/4.2-crud
영어로된 공식 가이드에서는 훨씬 더 많은 정보를 제시해서 찾아보니 필드와 데이터 타입을 정의해서 넣어야 했다.
텍스트로 된 document를 엘라스틱서치 안에서 필드로 나눠서 넣을 수 있을 것 같아서 좀 찾아보았다.
- Ingest Pipeline
문서가 indexing 되기 전 수행해야 하는 프로세서를 설정할 수 있다. 프로세서는 Ingest Processors에 존재하였다. https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html - Ingest Processors
https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.html
이 문서를 보면 정규식을 사용해서 텍스트를 추출하여 필드로 정의할 수 있다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/split-processor.html
split는 특정 구분자를 이용해서 필드로 정의한다.
일단 필드로 안나누고 법률 데이터 전체를 document 한 덩어리로 사용해도 되고, 방법은 데이터 형식에 달려있을 것 같으니 데이터부터 찾아보았다.
https://www.aihub.or.kr/aihubdata/data/view.do?currMenu=&topMenu=&aihubDataSe=data&dataSetSn=71723
굉장히 좋은 데이터를 찾았다. 활용도가 높은 판례 데이터를 수집하고 판례의 주요 내용을 추출요약하고 질의응답 셋을 작성, 키워드를 라벨링한 데이터이다.
해당 데이터를 가지고 학습시키는 용도이지만 질의응답 셋은 챗봇 파인 튜닝 혹은 학습에 사용하고 판례의 주요 내용을 검색 엔진에 등록해두면 좋을 것 같다.
데이터 형태는 다음과 같다.
{
"판례일련번호": 95595,
"사건명": "직위해제처분등무효확인",
"사건번호": "79누279",
"선고일자": "1981-01-13",
"법원명": "대법원",
"법원종류코드": null,
"사건종류명": "일반행정",
"사건종류코드": 400107.0,
"판결유형": "판결",
"선고": "선고",
"판례상세링크": "/DRF/lawService.do?OC=pwshoot&target=prec&ID=95595&type=HTML&mobileYn=",
"판시사항": "【판시사항】\\n\\n가. 직위해제처분 후에 그와 동일한 사유를 이유로 하는 파면처분을 한 경우의 직위해제처분의 효력과 동일사유의 판정기준\\n\\n나. 파면처분에 의하여 효력을 상실한 직위해제처분의 무효확인을 구할 수 있는지 여부\\n\\n다. 직위해제처분에 의한 당연퇴직이 행정소송의 대상이 될 수 있는지 여부",
"판결요지": "【판결요지】\\n\\n1. 직위해제 처분 후에 그와 동일한 사유를 들어 파면처분을 하였다면 그로써 직위해제처분은 효력을 상실하는 것이고 이 경우 징계사유와 파면사유가 동일한지의 여부는 중요한 사유들이 동일하여 전체적으로 볼 때 동일사유로 볼 수 있는지의 여부에 의하여 결정되어야 한다.\\n\\n2. 직위해제 처분의 효력이 파면처분에 의하여 효력을 상실하는 경우에도 확인의 이익이 있는 한 직위해제 처분의 무효확인을 구할 수 있다.\\n\\n3. 직위해제 처분에 의한 당연퇴직은 직위해제 상태의 일정기간 존속사실에 대한 효과로서 발생하는 것이고 별도의 당연퇴직의 행정처분이 있는 것은 아니므로 행정소송의 대상이 될 수 없다.",
"참조조문": "【참조조문】\\n\\n국가공무원법 제73조의2,행정소송법 제1조",
"참조판례": "【참조판례】\\n\\n대법원 1978.12.26. 선고 77누148 판결,\\n\\n1977.9.28. 선고 76누144 판결",
"판례내용": "【전문】\\n\\n【원고, 상고인】 원고 소송대리인 변호사 강인애 외 1인\\n\\n【피고, 피상고인】 총무처 소청심사위원장\\n\\n【원심판결】 서울고등법원 1979.8.29. 선고 78구239 판결\\n\\n【주문】\\n\\n원심판결 중 대통령이 1975.4.4 원고에 대하여 한 직위해제 처분의 무효확인 청구에 관한 부분을 파기하고 이 사건 부분을 서울고등법원에 환송한다.\\n\\n원고의 나머지 상고를 기각한다.\\n\\n상고기각 부분에 관한 상고 소송비용은 원고의 부담으로 한다.\\n\\n【이유】\\n\\n원고 소송대리인 강인애의 상고이유를 판단한다.\\n\\n(1) 직위해제 처분의 무효확인 청구부분에 관한 상고이유(상고이유 제1점과 제2점)에 대하여 판단한다.\\n\\n원심판결의 설시이유에 의하면, 원심은 그 거시의 증거에 의하여 원고에 대한 본건 직위해제 처분 사유와 본건 파면처분의 사유를 확정한 후 위 양자를 비교해 볼 때 직위해제 사유의 (나), (다), (라)항은 파면사유의 (가), (나), (바)항과 같고, 파면사유의 (다), (라)항은 같은 (가), (나)항, 따라서 직위해제 사유의 (나), (다)항과 함께 직위해제 사유의 (가)항의 사업비 부당전용 약 24,000,000원 중 특정할 수 있는 것을 별개 항목으로 한 것(따라서 직위해제 사유의 (나), (다)항과 파면사유의 (가), (나), (다), (라)항은 결국 각 직위해제 사유의 (가)항 중 사업비부당전용 부분에 포함되는 것임)으로서 결국 직위해제사유의 (가)항 중 사업비 부당전용 부분과 (나), (다), (라)항은 파면사유의 (가), (나), (다), (라), (바)항과 같으나 징계사유의 (가)항 중 사업부실(원고가 1974.1.1부터 같은 해 12.31까지 교육홍보실장 직무대리 또는 교육홍보국장으로 재직하면서 소관사업을 진행함에 있어 연간 계획건수 총 16건 중 연말 현재 집행완료한 사업이 그 50%인 8건에 불과하고 나머지 8건 중 6건은 정당한 사유없이 그 집행을 중단 또는 착수조차 하지 않았으며, 착수된 2건의 경우도 목표대비 60%이하의 부진한 실정이라는 점)의 점은 파면사유로 되어 있지 않는 바, 원래 직위해제 처분은 공무원이 국가공무원법 제73조의 2 제1항 각호소정의 사유가 있을 경우에 그 공무원의 신분관계는 이를 그대로 존속시키면서 다만 그 직위만을 부여하지 아니하는 처분으로서 만일 어떤 사유에 기하여 공무원을 직위해제한 후 다시 같은 공무원에 대하여 그 신분관계를 박탈하는 파면처분을 하였을 경우에 직위해제 사유와 파면사유가 동일한 경우에는 뒤에 이루어진 파면처분에 의하여 그전에 있었던 직위해제 처분은 그 효력을 상실케 되나, 직위해제 처분사유 중의 일부 또는 전부가 파면사유에서 빠짐으로써 그 사유에 서로 다른 점이 있을 경우에는 뒤에 이루어진 파면처분에 의하여 그 전에 있었던 직위해제 처분의 효력이 상실되지 않는다고 봄이 상당하므로 직위해제 처분사유 중의 일부가 뒤에 있은 파면처분의 사유에서 빠진 본건에 있어서는 그 파면처분에 의하여 그 전에 이루어진 직위해제 처분의 효력이 상실되지 않는다고 판시하여 원고에 대한 직위해제 처분이 그 뒤에 있은 파면처분에 의하여 실효되었음을 전제로 본건 직위해제 처분의 무효확인을 구하는 원고의 청구를 배척하고 있다.\\n\\n살피건대,직위해제 처분은 공무원에게 국가공무원법 제73조의 2 제1항각호 소정의 사유가 있을 경우 그 공무원에 대하여 공무원의 신분관계는 이를 그대로 존속시키면서 다만 그 직위만을 부여하지 아니하는 처분이므로 만일 어떤 사유에 기하여 공무원을 직위해제한 후, 그 직위해제 사유와 동일한 사유를 이유로 공무원의 신분관계를 박탈하는 파면처분을 하였을 경우에는 그로써 먼저 있었던 직위해제 처분은 그 효력을 상실하게 된다는 것이 본원의 판례( 대법원1978.12.26 선고 77누148 판결)이고 또 징계사유와 파면사유의 동일 여부를 판단함에 있어서는 중요한 사유들이 동일하며 전체적으로 볼 때 동일 사유로 볼 수 있는 경우에는 이를 동일한 것으로 보아야 할 것인 바,기록에 의하면 대통령은 국가공무원법 제73조의 2 제1항 제2호의 사유로 원고에 대하여 직위해제 처분을 하였고(갑 제4호증), 징계권자인 국토통일원장관은 위 직위해제처분 사유와 동일한 사유로 1975.4.28 중앙징계위원회에 대한 징계의결을 요구하였는데(갑 제6호증), 징계심의 당시 원고가 징계사유에 대하여 불복하므로 중앙징계위원장은 징계권자에게 자료의 보완을 요구하였고, 징계권자인 국토통일원장관은 그 보완요구에 따라 1975.7.19 중앙징계위원회에 징계요구사유 (가)항(직위해제 처분사유(가)항과 같다) 중 예산허위집행 금액만을 항목별로 세분한 징계요구사유 보완설명서(갑 제11호증의 6,7)를 제출한 사실, 그런데 중앙징계위원회에서는 원고에 대한 징계사유를 심의한 후, 징계의결 요구사유(가)항 중 원고가 1974년도에 목표사업의 일부를 완수하지 못하였다는 사유를 제외한 나머지 사유만을 적시하여 원고에 대한 파면을 의결(을 제2호증)한 사실이 인정되는 바, 그렇다면 본건에 있어서 중앙징계위원회가 징계권자의 징계의결 요구사항 중의 일부를 징계사유에 제외한 것은 그 사항이 징계사유가 되지 않거나 그에 관한 인정자료가 없어 이를 제외한 것으로 보여지는 것으로서 양자의 사유에 다른 점이 생긴 경위가 위 설시와 같을 뿐만 아니라 원심이 설시한 양 사유를 전체적으로 살펴볼 때 원고에 대한 직위해제 사유와 파면처분 사유는 동일한 것으로 봄이 타당할 것이니 원고에 대한 직위해제 처분은 후에 한 파면처분에 의하여 효력이 상실된 것이라고 할 것이다.\\n\\n그렇다면 원심이 양자의 사유가 다르다고 판단한 것은 직위해제 처분과 파면처분의 관계에 관한 법리를 오해하였거나 심리미진으로 인한 이유불비의 위법을 범한 것이라고 할 것이며직위해제 처분의 효력이 상실되었다고 하더라도 피고가 이를 다투고 있어 그 확인을 구할 이익이 있는 한 직위해제 처분의 무효확인을 구할 이익도 있는 것이라고 할 것이다.\\n\\n그렇다면 이 점을 지적하는 상고논지는 이유있어 이 점에서 직위해제 처분의 무효확인 청구부분에 관한 원심판결은 파기를 면하지 못할 것이다.\\n\\n(2) 당연퇴직처분의 무효확인 청구부분에 관한 상고이유(상고이유 제3점)에 관하여 판단한다.\\n\\n살피건대, 국가공무원법 제73조의 2 제4항에 의하면 「 제1항 제2호및 제5호의 규정에 의하여 직위해제된 자가 6월이 경과하여도 직위를 부여받지 못한 경우에는 6월이 경과한 날에 당연퇴직된다」고 규정하고 있는 바, 이당연퇴직은 직위해제 처분에 의한 직위해제 상태가 일정기간 존속하는 경우에 그 직위해제 상태의 일정기간 존속이라는 사실에 대한 효과로서 발생되는 것에 불과한 것이어서 직위해제 처분이 무효로 되거나 취소되면 당연퇴직의 효과는 발생하지 않았던 것으로 되는 것이며 직위해제처분 외에 당연퇴직의 행정처분이 있는 것은 아니라고 할 것이므로 당연퇴직의 인사발령은 행정소송의 대상이 되지 않는 것이라고 할 것이다. ( 대법원 1977.9.28 선고 76누144 판결참조) 그러니 같은 취지에서 당연퇴직처분의 무효확인을 구하는 원고의 소를 각하한 원심의 조처는 정당하고 원심판결에 소론 법리오해의 위법이나 판단유탈, 석명권불행사 내지는 심리미진의 위법이 없다. 논지는 이유없다.\\n\\n그러므로 본건 직위해제처분 무효확인 청구부분에 관한 원심판결을 파기하여 이 사건 부분을 원심법원에 환송하고 원고의 나머지 상고(당연퇴직 처분의 무효확인 청구부분에 대한 상고)를 기각하며 상고기각 부분에 관한 상고 소송비용은 패소자의 부담으로 하여 관여법관의 일치된 의견으로 주문과 같이 판결한다.\\n\\n대법관 유태흥(재판장) 안병수 김중서"
}
Elasticsearch 환경 구축
다음과 같은 JSON 형식의 데이터를 document로 등록해보자.
{
"판례일련번호": 95595,
"사건명": "직위해제처분등무효확인",
"사건번호": "79누279",
"선고일자": "1981-01-13",
"법원명": "대법원",
"법원종류코드": null,
"사건종류명": "일반행정",
"사건종류코드": 400107.0,
"판결유형": "판결",
"선고": "선고",
"판례상세링크": "/DRF/lawService.do?OC=pwshoot&target=prec&ID=95595&type=HTML&mobileYn=",
"판시사항": "【판시사항】\\n\\n가. 직위해제처분 후에 그와 동일한 사유를 이유로 하는 파면처분을 한 경우의 직위해제처분의 효력과 동일사유의 판정기준\\n\\n나. 파면처분에 의하여 효력을 상실한 직위해제처분의 무효확인을 구할 수 있는지 여부\\n\\n다. 직위해제처분에 의한 당연퇴직이 행정소송의 대상이 될 수 있는지 여부",
"판결요지": "【판결요지】\\n\\n1. 직위해제 처분 후에 그와 동일한 사유를 들어 파면처분을 하였다면 그로써 직위해제처분은 효력을 상실하는 것이고 이 경우 징계사유와 파면사유가 동일한지의 여부는 중요한 사유들이 동일하여 전체적으로 볼 때 동일사유로 볼 수 있는지의 여부에 의하여 결정되어야 한다.\\n\\n2. 직위해제 처분의 효력이 파면처분에 의하여 효력을 상실하는 경우에도 확인의 이익이 있는 한 직위해제 처분의 무효확인을 구할 수 있다.\\n\\n3. 직위해제 처분에 의한 당연퇴직은 직위해제 상태의 일정기간 존속사실에 대한 효과로서 발생하는 것이고 별도의 당연퇴직의 행정처분이 있는 것은 아니므로 행정소송의 대상이 될 수 없다.",
"참조조문": "【참조조문】\\n\\n국가공무원법 제73조의2,행정소송법 제1조",
"참조판례": "【참조판례】\\n\\n대법원 1978.12.26. 선고 77누148 판결,\\n\\n1977.9.28. 선고 76누144 판결",
"판례내용": "【전문】\\n\\n【원고, 상고인】 원고 소송대리인 변호사 강인애 외 1인\\n\\n【피고, 피상고인】 총무처 소청심사위원장\\n\\n【원심판결】 서울고등법원 1979.8.29. 선고 78구239 판결\\n\\n【주문】\\n\\n원심판결 중 대통령이 1975.4.4 원고에 대하여 한 직위해제 처분의 무효확인 청구에 관한 부분을 파기하고 이 사건 부분을 서울고등법원에 환송한다.\\n\\n원고의 나머지 상고를 기각한다.\\n\\n상고기각 부분에 관한 상고 소송비용은 원고의 부담으로 한다.\\n\\n【이유】\\n\\n원고 소송대리인 강인애의 상고이유를 판단한다.\\n\\n(1) 직위해제 처분의 무효확인 청구부분에 관한 상고이유(상고이유 제1점과 제2점)에 대하여 판단한다.\\n\\n원심판결의 설시이유에 의하면, 원심은 그 거시의 증거에 의하여 원고에 대한 본건 직위해제 처분 사유와 본건 파면처분의 사유를 확정한 후 위 양자를 비교해 볼 때 직위해제 사유의 (나), (다), (라)항은 파면사유의 (가), (나), (바)항과 같고, 파면사유의 (다), (라)항은 같은 (가), (나)항, 따라서 직위해제 사유의 (나), (다)항과 함께 직위해제 사유의 (가)항의 사업비 부당전용 약 24,000,000원 중 특정할 수 있는 것을 별개 항목으로 한 것(따라서 직위해제 사유의 (나), (다)항과 파면사유의 (가), (나), (다), (라)항은 결국 각 직위해제 사유의 (가)항 중 사업비부당전용 부분에 포함되는 것임)으로서 결국 직위해제사유의 (가)항 중 사업비 부당전용 부분과 (나), (다), (라)항은 파면사유의 (가), (나), (다), (라), (바)항과 같으나 징계사유의 (가)항 중 사업부실(원고가 1974.1.1부터 같은 해 12.31까지 교육홍보실장 직무대리 또는 교육홍보국장으로 재직하면서 소관사업을 진행함에 있어 연간 계획건수 총 16건 중 연말 현재 집행완료한 사업이 그 50%인 8건에 불과하고 나머지 8건 중 6건은 정당한 사유없이 그 집행을 중단 또는 착수조차 하지 않았으며, 착수된 2건의 경우도 목표대비 60%이하의 부진한 실정이라는 점)의 점은 파면사유로 되어 있지 않는 바, 원래 직위해제 처분은 공무원이 국가공무원법 제73조의 2 제1항 각호소정의 사유가 있을 경우에 그 공무원의 신분관계는 이를 그대로 존속시키면서 다만 그 직위만을 부여하지 아니하는 처분으로서 만일 어떤 사유에 기하여 공무원을 직위해제한 후 다시 같은 공무원에 대하여 그 신분관계를 박탈하는 파면처분을 하였을 경우에 직위해제 사유와 파면사유가 동일한 경우에는 뒤에 이루어진 파면처분에 의하여 그전에 있었던 직위해제 처분은 그 효력을 상실케 되나, 직위해제 처분사유 중의 일부 또는 전부가 파면사유에서 빠짐으로써 그 사유에 서로 다른 점이 있을 경우에는 뒤에 이루어진 파면처분에 의하여 그 전에 있었던 직위해제 처분의 효력이 상실되지 않는다고 봄이 상당하므로 직위해제 처분사유 중의 일부가 뒤에 있은 파면처분의 사유에서 빠진 본건에 있어서는 그 파면처분에 의하여 그 전에 이루어진 직위해제 처분의 효력이 상실되지 않는다고 판시하여 원고에 대한 직위해제 처분이 그 뒤에 있은 파면처분에 의하여 실효되었음을 전제로 본건 직위해제 처분의 무효확인을 구하는 원고의 청구를 배척하고 있다.\\n\\n살피건대,직위해제 처분은 공무원에게 국가공무원법 제73조의 2 제1항각호 소정의 사유가 있을 경우 그 공무원에 대하여 공무원의 신분관계는 이를 그대로 존속시키면서 다만 그 직위만을 부여하지 아니하는 처분이므로 만일 어떤 사유에 기하여 공무원을 직위해제한 후, 그 직위해제 사유와 동일한 사유를 이유로 공무원의 신분관계를 박탈하는 파면처분을 하였을 경우에는 그로써 먼저 있었던 직위해제 처분은 그 효력을 상실하게 된다는 것이 본원의 판례( 대법원1978.12.26 선고 77누148 판결)이고 또 징계사유와 파면사유의 동일 여부를 판단함에 있어서는 중요한 사유들이 동일하며 전체적으로 볼 때 동일 사유로 볼 수 있는 경우에는 이를 동일한 것으로 보아야 할 것인 바,기록에 의하면 대통령은 국가공무원법 제73조의 2 제1항 제2호의 사유로 원고에 대하여 직위해제 처분을 하였고(갑 제4호증), 징계권자인 국토통일원장관은 위 직위해제처분 사유와 동일한 사유로 1975.4.28 중앙징계위원회에 대한 징계의결을 요구하였는데(갑 제6호증), 징계심의 당시 원고가 징계사유에 대하여 불복하므로 중앙징계위원장은 징계권자에게 자료의 보완을 요구하였고, 징계권자인 국토통일원장관은 그 보완요구에 따라 1975.7.19 중앙징계위원회에 징계요구사유 (가)항(직위해제 처분사유(가)항과 같다) 중 예산허위집행 금액만을 항목별로 세분한 징계요구사유 보완설명서(갑 제11호증의 6,7)를 제출한 사실, 그런데 중앙징계위원회에서는 원고에 대한 징계사유를 심의한 후, 징계의결 요구사유(가)항 중 원고가 1974년도에 목표사업의 일부를 완수하지 못하였다는 사유를 제외한 나머지 사유만을 적시하여 원고에 대한 파면을 의결(을 제2호증)한 사실이 인정되는 바, 그렇다면 본건에 있어서 중앙징계위원회가 징계권자의 징계의결 요구사항 중의 일부를 징계사유에 제외한 것은 그 사항이 징계사유가 되지 않거나 그에 관한 인정자료가 없어 이를 제외한 것으로 보여지는 것으로서 양자의 사유에 다른 점이 생긴 경위가 위 설시와 같을 뿐만 아니라 원심이 설시한 양 사유를 전체적으로 살펴볼 때 원고에 대한 직위해제 사유와 파면처분 사유는 동일한 것으로 봄이 타당할 것이니 원고에 대한 직위해제 처분은 후에 한 파면처분에 의하여 효력이 상실된 것이라고 할 것이다.\\n\\n그렇다면 원심이 양자의 사유가 다르다고 판단한 것은 직위해제 처분과 파면처분의 관계에 관한 법리를 오해하였거나 심리미진으로 인한 이유불비의 위법을 범한 것이라고 할 것이며직위해제 처분의 효력이 상실되었다고 하더라도 피고가 이를 다투고 있어 그 확인을 구할 이익이 있는 한 직위해제 처분의 무효확인을 구할 이익도 있는 것이라고 할 것이다.\\n\\n그렇다면 이 점을 지적하는 상고논지는 이유있어 이 점에서 직위해제 처분의 무효확인 청구부분에 관한 원심판결은 파기를 면하지 못할 것이다.\\n\\n(2) 당연퇴직처분의 무효확인 청구부분에 관한 상고이유(상고이유 제3점)에 관하여 판단한다.\\n\\n살피건대, 국가공무원법 제73조의 2 제4항에 의하면 「 제1항 제2호및 제5호의 규정에 의하여 직위해제된 자가 6월이 경과하여도 직위를 부여받지 못한 경우에는 6월이 경과한 날에 당연퇴직된다」고 규정하고 있는 바, 이당연퇴직은 직위해제 처분에 의한 직위해제 상태가 일정기간 존속하는 경우에 그 직위해제 상태의 일정기간 존속이라는 사실에 대한 효과로서 발생되는 것에 불과한 것이어서 직위해제 처분이 무효로 되거나 취소되면 당연퇴직의 효과는 발생하지 않았던 것으로 되는 것이며 직위해제처분 외에 당연퇴직의 행정처분이 있는 것은 아니라고 할 것이므로 당연퇴직의 인사발령은 행정소송의 대상이 되지 않는 것이라고 할 것이다. ( 대법원 1977.9.28 선고 76누144 판결참조) 그러니 같은 취지에서 당연퇴직처분의 무효확인을 구하는 원고의 소를 각하한 원심의 조처는 정당하고 원심판결에 소론 법리오해의 위법이나 판단유탈, 석명권불행사 내지는 심리미진의 위법이 없다. 논지는 이유없다.\\n\\n그러므로 본건 직위해제처분 무효확인 청구부분에 관한 원심판결을 파기하여 이 사건 부분을 원심법원에 환송하고 원고의 나머지 상고(당연퇴직 처분의 무효확인 청구부분에 대한 상고)를 기각하며 상고기각 부분에 관한 상고 소송비용은 패소자의 부담으로 하여 관여법관의 일치된 의견으로 주문과 같이 판결한다.\\n\\n대법관 유태흥(재판장) 안병수 김중서"
}
일단 Elasticsearch를 사용하는 것 부터 시작이다.
Elasticsearch는 클러스터의 집합이다. 클러스터란 최소 하나 이상의 노드로 이루어진 집합이고, 서로 다른 클러스터는 데이터의 접근, 교환을 할 수 없는 독립적인 시스템이다. 여러 대의 서버가 하나의 클러스터를 구성할 수 있고 하나의 서버가 여러 개의 클러스터를 구성할 수 있다.
노드는 Elasticsearch의 프로세스 단위이다. 일단 여기까지만 알아두고 실습해보자.
Elasticsearch는 배포까지 생각했을 때 내가 고민한 방식은 다음과 같다.
- Elasticsearch 도커 이미지 구현
- 도커 이미지를 구현한다.
- 도커 이미지를 도커 레지스트리에 저장한다.
- EC2 인스턴스를 생성한다.
- EC2 인스턴스에 접속하고 Elasticsearch 이미지를 pull 한다.
- 포트 번호, X-Pack 보안을 잘 구성해야 한다.
- 해당 방식은 EC2 인스턴스를 하나 더 잡아먹는다.
- 스프링 코드에서 Elasticsearch 이미지에 접근하는 방법은 추가 조사가 필요하다.
- EC2 인스턴스에서 Elasticsearch 구현
- EC2 인스턴스를 생성한다.
- EC2 인스턴스에 접속하고 Elasticsearch를 설치한다.
- 구현한다.
- 스프링 코드에서 Elasticsearch로의 접근이 쉽다.
- EC2 인스턴스를 하나 더 잡아먹는다.
- 포트 번호, X-Pack 보안을 잘 구성해야 한다.
- EC2 로컬에서 작업하므로 docuemnt 등의 코드들 또한 EC2로 전송해야 하고 FTP가 굉장히 많이 필요하다… 즉 번거롭다.
이러한 이유에서 일단 로컬 Docker로 작업한 뒤 배포하고 스프링에서 접근해보고 하려 한다. 한 번 해보자!!
https://www.elastic.co/guide/en/elasticsearch/reference/current/run-elasticsearch-locally.html
도커 데스크톱을 다운받는다. 공식문서는 유닉스 기반이기에 WSL을 써야 한다.
https://docs.docker.com/desktop/install/windows-install/
설치 과정에서의 설정은 기본 설정을 유지한다. 설치가 완료되면 cmd에서 docker version 을 통해 설치가 잘 되었는지 확인해보자.
설치가 잘 되었다면 elasticsearch를 설치하면 된다.
https://hub.docker.com/_/elasticsearch
해당 링크에서 최신 버전을 참조해서 다운받았다.
git pull docker.elastic.co/elasticsearch/elasticsearch:8.15.2
새로운 네트워크를 생성해보자.
docker network create elastic
네트워크가 잘 생성되었는지는 docker network ls 로 확인이 가능하다.
이제 pull로 가져온 엘라스틱서치 이미지로 컨테이너를 생성해보자.
docker run --name es01 --net elastic -p 9200:9200 -itd -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.15.2
- —name : 컨테이너 이름 지정
- —net : 네트워크 지정
- -p 9200:9200 : 호스트의 9200 포트가 컨테이너 내부의 9200 포트에 매핑한다. 즉, 클라이언트가 9200 포트로 접근하면 그 요청이 Docker 내부 컨테이너의 Elasticsearch 9200 포트로 전달된다.
- -it : docker 컨테이너를 대화형 모드로 실행할 수 있게 한다.
- -d : 컨테이너를 백그라운드로 실행한다.
현재 실행중인 컨테이너는 docker ps로 확인이 가능하다.
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
위의 두 코드로 Kinana에 등록할 수 있는 등록 토큰이다. 안전하게 관리해야 한다.
docker exec -it es01 /bin/bash -c "export ELASTIC_PASSWORD='토큰토큰토큰' && echo \\$ELASTIC_PASSWORD"
이제 실행도 끝났고 접속할 수 있다!
접속할 수 있는 방법은 두 가지이다.
- 터미널에서 접속
elasticsearch 8 버전 이상부터는 사용자 아이디, 비밀번호가 정해져 있다.
docker logs es01을 통해 elasticsearch의 비밀번호를 확인할 수 있다.
비밀번호가 굉장히 어려우므로 변경해주자.
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
마지막에 -i 옵션을 붙여줘야 직접 설정할 수 있다.
curl -k -u elastic:비밀번호 https://localhost:9200 명령어로 접속을 할 수 있다.
또, 클러스터 이름도 변경해보자. - 도커 데스크톱에서 접속
Containers → 생성한 컨테이너 클릭 → Exec 에서 컨테이너 내부에 접근할 수 있다. - 웹 브라우저 사용
https://localhost:9200/
위의 경로로 접속 후 아이디, 비밀번호를 입력하면 된다. 아이디는 elastic이다.
'프로젝트: Co Laobr' 카테고리의 다른 글
[프로젝트 회고록] Co Labor를 마치며,,, (2) | 2025.01.04 |
---|---|
[Co Labor] 백엔드 HTTPS 배포하기 - Nginx, CloudFront (0) | 2024.11.22 |
[Co Labor] RAG 맛보기! 챗봇을 보완해보자. (0) | 2024.11.11 |
[Co Labor] Spring + MySQL + AWS 배포하기! - EC2, RDS (0) | 2024.10.28 |
[Co Labor] 생성형 AI를 활용한 AI 검색 보완 (4) | 2024.10.27 |