2. Atlassian Server RDS for MySQL 삽질기
안녕하세요?
• 현 야놀자 R&D Technical Center, Systems Engineer
• AWSKRUG 답변러
• 시스템 관리자 DevOps 로 변화 중
• 가끔 DBA, Security 업무를 병행하거나, 협업을 자주 합니다
7. Atlassian Server RDS for MySQL 삽질기
• ID 관리 통합 솔루션
• AD나 LDAP으로부터 디렉토리를 읽어와 통합할 수 있음
• SSO 기능으로 한 쪽에서 로그인한 세션을 다른 서버에서 같이 사용 가능
• Directory connector 로 연결하고, User/Group membership 을 Crowd 상에서 추가로 만들
수 있음
• 예: AD에 confluence-user 그룹을 만들지 않아도 Crowd 에서 만들면 사용할 수 있어요
• REST API 지원, Custom Application 지원되므로 IdP 로 사용할 수도…
• Rest API Reference : https://docs.atlassian.com/atlassian-crowd/current/REST/
• Server/Datacenter 버전만 존재하며 Cloud 에서는 Atlassian Access 가 대응
8. Atlassian Server RDS for MySQL 삽질기
• 위키!로 많이 알고 계시죠
• 문서 협업 작성 도구로 소개 되고 있습니다
• 최근엔 동시 편집 기능이 생겼어요 (6버전 이상)
9. Atlassian Server RDS for MySQL 삽질기
• 이슈 트래커 보다는 지라!로 많이 알고 계시죠
• 지라부터 도입했다면 지라 Internal directory 로 Crowd 를 대신할 수 있습니다
• REST API 같은 고급 기능은 안되요
• 6버전부터는 제품이 세분화 되었어요
• Jira Core – 일반 업무 중심
• Jira Software – Software 개발자 업무 중심
• Jira Service Desk – Agent 단위로 요청을 받는 업무 중심
10. Atlassian Server RDS for MySQL 삽질기
• Git 저장소 호스팅 서비스를 제공합니다
• 이름이 예전엔 Stash 였고, Cloud 버전이 Bitbucket 이었는데,
Server 버전도 이름을 Bitbucket 으로 바꿨어요
• GitLab Server 와 같이 다양한 기능은 없지만, 다른 Atlassian 제품과 호환에 강점
• OpenJDK도 제일 먼저 적용 가능했고, MariaDB도 사용할 수 있어요!
13. • 관계형 ✨
• Amazon Aurora : MySQL, PostgreSQL
• Amazon RDS : MySQL, PostgreSQL, MariaDB, Oracle, SQL Server
• Amazon RedShift
• 키-값 : Amazon DynamoDB
• 문서 : Amazon DocumentDB (MongoDB 호환)
• 인메모리 : ElastiCache for Redis, ElastiCache for Memcached
• 그래프 : Amazon Neptune
• 시계열 : Amazon Timestream
• 원장 : Amazon Quantum Ledger Database (QLDB)
Atlassian Server RDS for MySQL 삽질기
14. 왜 RDS를 선택 했나요?
Atlassian Server RDS for MySQL 삽질기
15. • Atlassian 제품군은 PostgreSQL, MySQL 위에 주로 올라감
• 해외의 경우는 PostgreSQL 에 대한 Reference 가 많음
• 하지만 국내의 경우 MySQL 로 운영하는 경우가 많음 : 익숙, 운영 편의성…
• 기존 운영 방식 : 서버에 MySQL 올려서 사용
• Dump 파일로 백업 : Atlassian 제품군 권고 방법 복구에 시간이 소요
• DB 파일 자체를 백업 : 복구 시간 단축, 무결성 issue
• OS 관리, 스펙 상향의 어려움 주로 Atlassian 제품 업그레이드시에만 챙김
• DB Tuning : my.cnf 관리의 어려움, Application 특성 파악 어려움
Atlassian Server RDS for MySQL 삽질기
16. • Amazon Aurora
• MySQL 인터페이스를 제공 + 완전히 다른 Storage Engine
• 무리 없이 사용할 수 있겠지 라고 생각했으나…
• 현재 Server 버전에서는 Amazon Aurora 를 공식 지원하지 않음
• 특히 로그 등에 특별히 명시되지 않는 형태로 에러가 나와서 찾기가 어려웠음 😭
• https://jira.atlassian.com/browse/CONFSERVER-36248
• https://jira.atlassian.com/browse/JRASERVER-41985
• Data Center 버전에서는 곧 지원 예정
• https://community.atlassian.com/t5/Summit-articles/What-happens-at-Atlassian-Summit-Las-Vegas-does-not-stay-
in/ba-p/1081981
Atlassian Server RDS for MySQL 삽질기
17. • 결국 방법은 RDS for MySQL 뿐인가…
• Open source MySQL 과 가장 유사한 관리형 서비스⭐️
• EC2 로 올렸을 때 OS관리의 번거로움, 사이즈 상향 시 튜닝 값 확인/수정의 어려움 해소
• 재기동만으로 올라가는 엔진 버전 + OS 접근 자체가 불가하므로 관리영역이 줄어듬
• 각종 메모리 관련 parameter 가 수식으로 설정되어 있어 별도로 계산할 필요가 없음
Atlassian Server RDS for MySQL 삽질기
18. • 결국 방법은 RDS for MySQL 뿐인가…
• Replication 은 걸어도 좋지만, Snapshot 정도로도 크게 이슈가 없음
• 어차피 가장 최종 버전의 정보만 중요할테니…
• 복구도 스냅샷으로 바로 띄우니, 기존의 dump 복구 시간보다 엄청난 단축!
• Confluence 서버 & RDS DB를 스냅샷에서 띄워서, Space Export 를 한 뒤,
실 서버에 Import 완료까지 1시간만에 끝!
Atlassian Server RDS for MySQL 삽질기
19. • 결국 방법은 RDS for MySQL 뿐인가…
• RDS 로 바꾸고 현재까지 반년이 넘었는데 별 탈 없이 사용하고 있습니다!
• 믿고 쓰는 AWS 관리형 서비스(?)
Atlassian Server RDS for MySQL 삽질기
20. 운영 중 있었던 일…
Atlassian Server RDS for MySQL 삽질기
21. • Crowd 의 Group membership 을 일괄 수정 시도를 DB를 직접 접근
• 내용이 꼬이면서 Crowd 로 인증하는 모든 동작이 실패
• 마침 금요일이어서, “여러분 주말에 편하게 쉬세요. 어떻게든 고칠게요😭”
• 결국 처음부터 재설치 하여 복구
• Crowd 에 데이터가 별로 없었기에 가능한 일
• 교훈: ERD 없이 DB 건들지 말자
• https://developer.atlassian.com/server/crowd/crowd-database-schema/
Atlassian Server RDS for MySQL 삽질기
Crowd 의 DB를 수정하다가 그만…
22. • 동시 편집 기능이 들어가면서, 잦은 저장 실패가 발생
• 처음엔, 그냥 동시 편집을 여러 사람이 긴 문서를 수정해서 라고 생각했으나…
• 얼마 뒤 짧은 문서에도 동일한 에러가 발생!
• 확인해 보니, MySQL Collation 을 utf8bin 으로 설치하게 되는데,
emoji 입력 시 글자를 인지하지 못해 문제가 발생하게 되었다!
• Collation 을 utf8mb4 로 변경하여 해결
• https://confluence.atlassian.com/confkb/saving-page-throws-unable-to-communicate-with-
server-message-921470725.html
• Jira 의 경우 : https://confluence.atlassian.com/jirakb/emojis-and-special-characters-for-jira-
with-mysql-952604493.html
Atlassian Server RDS for MySQL 삽질기
Confluence 가 저장이 안 되요!
23. RDS 사용 시 유의사항 또는 팁
Atlassian Server RDS for MySQL 삽질기
24. • 먼저 VPC Private Network 를 꼭 만들고 사용하세요
• AWS IP 는 노출되어 있고, 업데이트되기 때문에, Brute Force 공격이 많이 들어오게 되어
있습니다.
• Public accessibility 를 켜 놓으면 접근은 쉽겠으나, 많은 공격 시도가 있을 것입니다.
• Bastion Host 등으로 SSH Tunneling 하여 사용을 강력히 권고 드립니다.
• 문제가 생기면 Error Log, Slow Query Log 를 보세요.
• 특히 RDS 는 Cloudwatch Logs Stream 으로 Log를 발행할 수 있습니다.
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MyS
QL.html#USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs
• Audit Log Plugin 을 설정하면, 특정 사용자의 Behavior 를 감사할 수 있습니다.
(Aurora, MariaDB, MySQL 중 일부 버전에 사용 가능)
• https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlu
gin.html
Atlassian Server RDS for MySQL 삽질기